当前位置: 首页 > news >正文

CDH集群离线配置python3环境,并安装pyhive、impyla、pyspark

背景:

项目需要对数仓千万级数据进行分析、算法建模。因数据安全,数据无法大批量导出,需在集群内进行分析建模,但CDH集群未安装python3 环境,需在无网情况下离线配置python3环境及一系列第三方库。

采取策略,使用外部联网linux环境创建python3虚拟环境,然后整体迁移集群环境

文章目录

          • 1. 外部机器和集群统一安装anaconda3环境[官网下载地址](https://www.anaconda.com/download#downloads)
          • 2. 外部机器安装pyhive、impyla、pyspark、ipykernel
          • 3. 环境迁移
          • 4. 问题解决(坏的解释器:没有那个文件或目录)
          • 5. jupyterlab 内核生成
          • 6. pyhive、impyla连接测试
          • 7. pyspark 对接CDH集群spark测试【pyspark版本要和集群CDH spark版本一致】

1. 外部机器和集群统一安装anaconda3环境官网下载地址
>> sh Anaconda3-2023.03-1-Linux-x86_64.sh
2. 外部机器安装pyhive、impyla、pyspark、ipykernel
>> conda create -n python3.7 python=3.7  # 创建py3.7虚拟环境,CDH集群spark2.4.0最高支持python3.7
>> conda 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解释器

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NTKhm2QL-1692673902815)(C:\Users\zy\Desktop\集群离线配置python3+jupyterlab+pyspark+impyla.assets\image-20230801101207769.png)]

迁移后 ipykernel 提示找不到python解释器

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QvUlMG9n-1692673902816)(C:\Users\zy\Desktop\集群离线配置python3+jupyterlab+pyspark+impyla.assets\image-20230815102600598.png)]

解决:

进入envs/python3.7/bin 下,修改pip、pip3、ipykernel等命令内容,将第一行改为集群python对应路径。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jGdIrACZ-1692673902816)(C:\Users\zy\Desktop\集群离线配置python3+jupyterlab+pyspark+impyla.assets\image-20230801101924909.png)]

5. jupyterlab 内核生成
#1 激活、退出虚拟环境
>> conda activate python3.7    [conda deactivate]#2. 虚拟环境下
>> ipython kernel install --user --name=python3.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.py
'''
c.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'
}
'''

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oZ45Demg-1692673902817)(C:\Users\zy\Desktop\集群离线配置python3+jupyterlab+pyspark+impyla.assets\image-20230822105553580.png)]

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(host='namenode',port=10000,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(data=data,columns=col_name))# 关闭hive连接
cursor.close()
conn.close()## python 读取数仓第二种方式  impala:jbdc
# 连接impala
conn = connect(host='namenode',port=21050,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(action='ignore')# 制定集群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(conf=conf)
spark = SparkSession.builder.config(conf=conf).enableHiveSupport().getOrCreate()
spark

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hcaapiDV-1692673902817)(C:\Users\zy\Desktop\集群离线配置python3+jupyterlab+pyspark+impyla.assets\image-20230822110440084.png)]
备注:一般会报
Permission denied: user=root, access=WRITE, inode=“/user/spark/applicationHistory”:spark:spark:drwxr-xr-x 权限错误,
这是因为写代码得用户时jupyter服务启动用户,而CDH 中hadoop、hive、spark 文件的用户分别为hdfs、hive、spark用户。

相关文章:

CDH集群离线配置python3环境,并安装pyhive、impyla、pyspark

背景: 项目需要对数仓千万级数据进行分析、算法建模。因数据安全,数据无法大批量导出,需在集群内进行分析建模,但CDH集群未安装python3 环境,需在无网情况下离线配置python3环境及一系列第三方库。 采取策略&#xf…...

python并行操作(基于concurrent.futures.ThreadPoolExecutor)

文章目录 一、明确自身cpu可并行的核数二、根据所有任务计算在各个核上平均跑多少任务三、最后把任务划分在不同的核上跑四、拿来主义 此为利用cpu并行计算的能力,充分利用cpu在循环时并行计算。其实也是受C并行操作的影响,如果需要C版,可以移…...

Leetcode.73矩阵置零

给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法 class Solution {public void setZeroes(int[][] matrix) {int m matrix.length, n matrix[0].length;boolean[] row new boolean[m];boolean[] col…...

jdk 04 stream的collect方法

01.收集(collect) collect,收集,可以说是内容最繁多、功能最丰富的部分了。 从字面上去理解,就是把一个流收集起来,最终可以是收集成一个值也可以收集成一个新的集合。 collect主要依赖java.util.stream.Collectors类内置的静态方…...

介绍REST API

REST (Representational State Transfer) 是一种基于 web 架构的 API 设计风格, 允许客户端应用程序通过 HTTP 请求与服务器进行交互。RESTful API就是按照REST风格设计的API。 RESTful API 的设计原则包括:使用统一资源标识符 (URI) 标识资源&#xff…...

【leetcode 力扣刷题】反转链表+递归求解

反转链表递归求解 206. 反转链表解法①:取下一个节点在当前头节点前插入解法②:反转每个节点next的指向解法③:递归 92.反转链表Ⅱ反转left到right间节点的next指向 234.回文链表解法①:将链表元素存在数组中,在数组上…...

一文读懂Redis配置,史上真香配置

文章目录 基本配置项AOF持久化配置项RDB持久化配置项淘汰策略配置项主从复制配置项鸣谢 让那些总为redis连接异常的小白指引明灯,少走弯路。为那些不知道如何进行高级配置的大佬整一杯小酒。 基本配置项 bind:用于设置Redis绑定的IP地址。默认情况下&…...

maven打出jar中动态替换占位符

使用场景&#xff1a; maven打出的jar中pom.xml动态替换占位符 有些时候某些公共工具jar包被项目引用后发现公共jar的pom.xml中的version依然还是占位符&#xff0c;例如下面 <dependency><groupId>org.projectlombok</groupId><artifactId>lombok<…...

【Git游戏】通过游戏重新学习Git

在提交树上移动 HEAD HEAD:一个标志符号&#xff08;通常情况下指向当前分支&#xff0c;间接指向当前最新的提交记录&#xff09; 可以通过git checkout commitID从而指向提交记录 commitID 本身是一串哈希值&#xff08;基于 SHA-1&#xff0c;共 40 位&#xff09; 我们在…...

如何通过以太坊JSON-RPC方式获取ERC-20代币的信息?

目录 一、ERC-20介绍 二、ERC-20代币标准功能 1、可选功能 2、标准功能 三、获取代币信息...

线性代数的学习和整理4: 求逆矩阵的多种方法汇总

目录 原始问题&#xff1a;如何求逆矩阵&#xff1f; 1 EXCEL里&#xff0c;直接可以用黑盒表内公式 minverse() 数组公式求A- 2 非线性代数方法&#xff1a;解方程组的方法 3 增广矩阵的方法 4 用行列式的方法计算&#xff08;未验证&#xff09; 5 A-1/|A|*A* &…...

【C#学习笔记】匿名函数和lambda表达式

文章目录 匿名函数匿名函数的定义匿名函数作为参数传递匿名函数的缺点 lambda表达式什么是lambda表达式闭包 匿名函数 为什么我们要使用匿名函数&#xff1f;匿名函数存在的意义是为了简化一些函数的定义&#xff0c;特别是那些定义了之后只会被调用一次的函数&#xff0c;与其…...

百度Apollo:引领自动驾驶技术创新的先锋

文章目录 前言一、内容总结 前言 大家好&#xff0c;我是萝卜头不吃萝卜头&#xff0c;今天和大家分享一下我学习百度Apollo自动驾驶的心得。 在七月份的时候&#xff0c;我收到了Apollo开发者社区的邀请&#xff0c;进行学习Apollo自动驾驶汽车的2023星火培训训练&#xff0c…...

Redis 重写 AOF 日志期间,主进程可以正常处理命令吗?

重写 AOF 日志的过程是怎样的&#xff1f; Redis 的重写 AOF 过程是由后台子进程 bgrewriteaof 来完成的&#xff0c;这么做有以下两个好处。 子进程进行 AOF 重写期间&#xff0c;主进程可以继续处理命令请求&#xff0c;从而避免阻塞主进程子进程带有主进程的数据副本。这里…...

java实现生成RSA公私钥、SHA256withRSA加密以及验证工具类

前言&#xff1a; RSA属于非对称加密。所谓非对称加密&#xff0c;需要两个密钥&#xff1a;公钥 (publickey) 和私钥 (privatekey)。公钥和私钥是一对&#xff0c;如果用公钥对数据加密&#xff0c;那么只能用对应的私钥解密。如果用私钥对数据加密&#xff0c;只能用对应的公…...

lab7 thread

文章目录 Uthread: switching between threadstaskhints思路上下文的恢复和保存thread_createthread_schedule Using threads思路 Barrier Uthread: switching between threads 在这个练习中&#xff0c;你将为一个用户级别线程系统设计上下文切换机制&#xff0c;并实现它。 …...

接口自动化测试:mock server之Moco工具

什么是mock server mock&#xff1a;英文可以翻译为模仿的&#xff0c;mock server是我们用来解除依赖&#xff08;耦合&#xff09;&#xff0c;假装实现的技术&#xff0c;比如说&#xff0c;前端需要使用某些api进行调试&#xff0c;但是服务端并没有开发完成这些api&#…...

用python从零开始做一个最简单的小说爬虫带GUI界面(2/3)

目录 前一章博客 前言 主函数的代码实现 逐行代码解析 获取链接 获取标题 获取网页源代码 获取各个文章的链接 函数的代码 导入库文件 获取文章的标题 获取文章的源代码 提取文章目录的各个文章的链接 总代码 下一章内容 前一章博客 用python从零开始做一个最简单…...

CEF 缓存处理:清理缓存、禁用缓存、忽略缓存

目录 一、CEF缓存处理 1、指定缓存路径 2、清理缓存 3、禁用缓存 1)、原理分析...

Android 系统桌面 App —— Launcher 开发(1)

Android 系统桌面 App —— Launcher 开发&#xff08;1&#xff09; Launcher简介 Launcher就是Android系统的桌面&#xff0c;俗称“HomeScreen”也就是我们开机后看到的第一个App。launcher其实就是一个app&#xff0c;它的作用是显示和管理手机上其他App。目前市场上有很…...

conda相比python好处

Conda 作为 Python 的环境和包管理工具&#xff0c;相比原生 Python 生态&#xff08;如 pip 虚拟环境&#xff09;有许多独特优势&#xff0c;尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处&#xff1a; 一、一站式环境管理&#xff1a…...

iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘

美国西海岸的夏天&#xff0c;再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至&#xff0c;这不仅是开发者的盛宴&#xff0c;更是全球数亿苹果用户翘首以盼的科技春晚。今年&#xff0c;苹果依旧为我们带来了全家桶式的系统更新&#xff0c;包括 iOS 26、iPadOS 26…...

MVC 数据库

MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...

使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装

以下是基于 vant-ui&#xff08;适配 Vue2 版本 &#xff09;实现截图中照片上传预览、删除功能&#xff0c;并封装成可复用组件的完整代码&#xff0c;包含样式和逻辑实现&#xff0c;可直接在 Vue2 项目中使用&#xff1a; 1. 封装的图片上传组件 ImageUploader.vue <te…...

学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1

每日一言 生活的美好&#xff0c;总是藏在那些你咬牙坚持的日子里。 硬件&#xff1a;OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写&#xff0c;"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...

第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明

AI 领域的快速发展正在催生一个新时代&#xff0c;智能代理&#xff08;agents&#xff09;不再是孤立的个体&#xff0c;而是能够像一个数字团队一样协作。然而&#xff0c;当前 AI 生态系统的碎片化阻碍了这一愿景的实现&#xff0c;导致了“AI 巴别塔问题”——不同代理之间…...

令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍

文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结&#xff1a; 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析&#xff1a; 实际业务去理解体会统一注…...

今日科技热点速览

&#x1f525; 今日科技热点速览 &#x1f3ae; 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售&#xff0c;主打更强图形性能与沉浸式体验&#xff0c;支持多模态交互&#xff0c;受到全球玩家热捧 。 &#x1f916; 人工智能持续突破 DeepSeek-R1&…...

根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:

根据万维钢精英日课6的内容&#xff0c;使用AI&#xff08;2025&#xff09;可以参考以下方法&#xff1a; 四个洞见 模型已经比人聪明&#xff1a;以ChatGPT o3为代表的AI非常强大&#xff0c;能运用高级理论解释道理、引用最新学术论文&#xff0c;生成对顶尖科学家都有用的…...

【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统

目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索&#xff08;基于物理空间 广播范围&#xff09;2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...