域名和网站的关系,住房和城乡建设厅安全员证,国外浏览器入口,wordpress插件如何汉化背景#xff1a;
项目需要对数仓千万级数据进行分析、算法建模。因数据安全#xff0c;数据无法大批量导出#xff0c;需在集群内进行分析建模#xff0c;但CDH集群未安装python3 环境#xff0c;需在无网情况下离线配置python3环境及一系列第三方库。
采取策略#xf…背景
项目需要对数仓千万级数据进行分析、算法建模。因数据安全数据无法大批量导出需在集群内进行分析建模但CDH集群未安装python3 环境需在无网情况下离线配置python3环境及一系列第三方库。
采取策略使用外部联网linux环境创建python3虚拟环境然后整体迁移集群环境。 文章目录 1. 外部机器和集群统一安装anaconda3环境[官网下载地址](https://www.anaconda.com/download#downloads)2. 外部机器安装pyhive、impyla、pyspark、ipykernel3. 环境迁移4. 问题解决(坏的解释器没有那个文件或目录)5. jupyterlab 内核生成6. pyhive、impyla连接测试7. pyspark 对接CDH集群spark测试【pyspark版本要和集群CDH spark版本一致】 1. 外部机器和集群统一安装anaconda3环境官网下载地址 sh Anaconda3-2023.03-1-Linux-x86_64.sh2. 外部机器安装pyhive、impyla、pyspark、ipykernel conda create -n python3.7 python3.7 # 创建py3.7虚拟环境CDH集群spark2.4.0最高支持python3.7conda activate python3.7 # 激活虚拟环境pip install pyhive,impyla,pyspark # pip会自动安装thrif等依赖包若报gcc等系统问题具体问题百度分析pip install ipykernel # 创建jupyter内核使用使用jupyterlab远程进行数据分析pip install scikit-learn、lightgbm # 安装其他需要第三方库3. 环境迁移
外部机器/anaconda3/envs zip -r python3.7.zip ./python3.7 # 压缩整个虚拟环境
集群/anaconda3/envs unzip python3.7.zip # 大功告成4. 问题解决(坏的解释器没有那个文件或目录)
迁移后 ./pip 提示 找不到python解释器 迁移后 ipykernel 提示找不到python解释器 解决
进入envs/python3.7/bin 下修改pip、pip3、ipykernel等命令内容将第一行改为集群python对应路径。 5. jupyterlab 内核生成
#1 激活、退出虚拟环境conda activate python3.7 [conda deactivate]#2. 虚拟环境下ipython kernel install --user --namepython3.7#3. 重启jupyter-lab 查看即可nohup ./jupyter-lab --allow-root /data/xx/anaconda3/log.out # 备注jupyterlab 服务由anaconda3主环境base创建jupyter-lab --generate-config (配置远程访问)vim jupyter_lab_config.pyc.ServerApp.ip 0.0.0.0
c.ServerApp.port 8888
c.ServerApp.passwd 8888
c.ServerApp.notebook_dir /data/xx/anaconda3/data
c.ServerApp.open_browser False
c.NotebookApp.passwords {user1: sha1:user1_password_hash, # python -c from notebook.auth import passwd; print(passwd()) 生成用户密码user2: sha1:user2_password_hash,user3: sha1:user3_password_hash
}6. pyhive、impyla连接测试
from pyhive import hive
from impala.dbapi import connect
from impala.util import as_pandas## python 读取数仓第一种方式 hive:jbdc
# pyhive 连接
conn hive.Connection(hostnamenode,port10000,database库名)
cursor conn.cursor()# 执行查询
cursor.execute(desc user_info)
col_name [i[0] for i in cursor.fetchall()]
cursor.execute(select * from user_info limit 2)
data cursor.fetchall()
print(pd.DataFrame(datadata,columnscol_name))# 关闭hive连接
cursor.close()
conn.close()## python 读取数仓第二种方式 impala:jbdc
# 连接impala
conn connect(hostnamenode,port21050,database库名)
cursor conn.cursor()# 执行查询
cursor.execute(select * from user_info where name is not null)
data as_pandas(cursor)备注使用pyhive和impyla 读取数据还是读取到一台集群节点内存上速度慢占内存且分析比较困难适合小批量处理。如处理千万级数据还是使用pyspark进行并行分析。
7. pyspark 对接CDH集群spark测试【pyspark版本要和集群CDH spark版本一致】
## python 分析大量数据 pyspark
import os
from pyspark import SparkContext,SparkConf
from pyspark.sql import SparkSessionimport warnings
warnings.filterwarnings(actionignore)# 制定集群spark、hadoop家目录os.environ[SPARK_HOME] /opt/cloudera/parcels/CDH-6.3.4-1.cdh6.3.4.p0.6751098/lib/spark
os.environ[HADOOP_CONF_DIR] /opt/cloudera/parcels/CDH-6.3.4-1.cdh6.3.4.p0.6751098/lib/hadoop
os.environ[PYSPARK_PYTHON] ./py3/bin/python parameters [(spark.app.name,sklearn),(spark.yarn.dist.files,hdfs://namenode:8020/python3/python3.7.zip#py3)(spark.master,yarn),(spark.submit.deploymode,client),]conf SparkConf().setAll(parameters)
#sc SparkContext.getOrCreate(confconf)
spark SparkSession.builder.config(confconf).enableHiveSupport().getOrCreate()
spark 备注一般会报 Permission denied: userroot, accessWRITE, inode“/user/spark/applicationHistory”:spark:spark:drwxr-xr-x 权限错误 这是因为写代码得用户时jupyter服务启动用户而CDH 中hadoop、hive、spark 文件的用户分别为hdfs、hive、spark用户。