【spark】spark-submit 提交python外部依赖包(elasticsearch)
建议先看下参考链接:spark-submit 提交python外部依赖包spark-submit提交python脚本过程记录需求:使用pyspark的过程中,发现集群的python并没有安装自己需要的包,比如elasticsearch包等,这样就只能靠自己把包打上,然后才能被分发到集群的各台节点机器上,然后被执行,这里举个例子,如何加载python的外部依赖包elasticsearch1. 利用指
建议先看下参考链接:
spark-submit 提交python外部依赖包
需求:使用pyspark的过程中,发现集群的python并没有安装自己需要的包,比如elasticsearch包等,这样就只能靠自己把包打上,然后才能被分发到集群的各台节点机器上,然后被执行,这里举个例子,如何加载python的外部依赖包elasticsearch
1. 利用指定pip安装elasticsearch到指定目录
(1) 指定pip是因为公司内部机器上可能有多种pip环境,root的pip(/usr/bin/pip)一般是没有权限的,需要指定用户的pip
(2) 指定目录是因为把elasticsearch安装到spark项目环境目录中方便一点
xxx/xxxx/bin/pip install elasticsearch --target=xxx/xxx/xxxx/elasticsearch
2. 坑
安装完成之后,这里有个坑点,大家一定注意一下:
elasticsearch文件夹下是这样,说白了elasticsearch需要一些额外的依赖包urlib3
和certifi
(因为certifi本地已经有了,所以下载目录里边就没有certifi信息)
可以通过pip show elasticsearch
查看elasticsearch包相关的信息
如果直接把上面的目录打包成zip上传到spark集群上,import elasticsearch
会失败的
3. 解决办法
下面分两种情况来说:
一、 集群上已经有urllib3
和certifi
时,这时候,我们只需要将红框打包成elasticsearch.zip然后在spark-submit中的py-file 声明即可
二、 集群上没有urllib3
和certifi
时,分别打包即可(不要带.dist-info文件)
更多推荐
所有评论(0)