假设spark里用到了purl这个三方件,https://github.com/ultrabluewolf/p.url,他还额外依赖futures这个三方件(six的话,anaconda2自带)。

pyspark 代码如下:

from pyspark import SparkConf, SparkContext
conf = SparkConf().setMaster("local").setAppName("My test App")
sc = SparkContext(conf=conf)
#from purl import Purldef get_purl(x):from purl import Purlurl = Purl('https://github.com/search?q={}'.format(x))return str(url.add_query('name', 'dog'))int_rdd = sc.parallelize([1, 2, 3, 4])
r =int_rdd.map(lambda x: get_purl(x))
print(r.collect())

下面说明如何编译打包egg。

通过https://pypi.org/project/p.url/#files 下载源码。然后解压:

python setup.py  bdist_egg

在dist目录下可以看到有egg文件生成。

同理,下载https://pypi.org/project/future/#files futures的源码,然后解压生成egg文件。

最终运行:

spark-submit --py-files p.url-0.1.0a4-py2.7.egg,future-0.17.1-py2.7.egg main_dep.py

结果输出:

['https://github.com/search?q=1&name=dog', 'https://github.com/search?q=2&name=dog', 'https://github.com/search?q=3&name=dog', 'https://github.com/search?q=4&name=dog']

补充官方文档,比较蛋疼,没有说具体操作:

Complex Dependencies

Some operations rely on complex packages that also have many dependencies. For example, the following code snippet imports the Python pandas data analysis library:

def import_pandas(x):import pandasreturn xint_rdd = sc.parallelize([1, 2, 3, 4])
int_rdd.map(lambda x: import_pandas(x))
int_rdd.collect()

pandas depends on NumPy, SciPy, and many other packages. Although pandas is too complex to distribute as a *.py file, you can create an egg for it and its dependencies and send that to executors.

Limitations of Distributing Egg Files

In both self-contained and complex dependency scenarios, sending egg files is problematic because packages that contain native code must be compiled for the specific host on which it will run. When doing distributed computing with industry-standard hardware, you must assume is that the hardware is heterogeneous. However, because of the required C compilation, a Python egg built on a client host is specific to the client CPU architecture. Therefore, distributing an egg for complex, compiled packages like NumPy, SciPy, and pandas often fails. Instead of distributing egg files you should install the required Python packages on each host of the cluster and specify the path to the Python binaries for the worker hosts to use.

转载于:https://www.cnblogs.com/bonelee/p/11125481.html

spark-submit python egg 解决三方件依赖问题相关推荐

  1. Pydev 找不到新安装的 Python egg 解决方法

    2019独角兽企业重金招聘Python工程师标准>>> Pydev 折腾 Python,调用第三方包,就easy_install了几个egg, 但Pydev死活提示import 模块 ...

  2. spark提交python程序_Spark任务提交(Spark Submit)

    Spark-Submit简介 spark-submit脚本用于在集群上启动应用程序,它位于Spark的bin目录中.这种启动方式可以通过统一的界面使用所有的Spark支持的集群管理功能,因此您不必为每 ...

  3. spark和python的关系_spark submit和pyspark有什么区别?

    如果启动pyspark,然后运行以下命令:import my_script; spark = my_script.Sparker(sc); spark.collapse('./data/') 一切都很 ...

  4. spark的python开发安装方式,最简单的方式来安装Python依赖关系的Spark执行器节点?...

    I understand that you can send individual files as dependencies with Python Spark programs. But what ...

  5. spark提交python程序_pyspark:带有spark提交的jars依赖

    我编写了一个pyspark脚本,该脚本读取两个json文件,coGroup然后将它们发送到elasticsearch集群.当我在本地运行该elasticsearch- hadoop文件时,一切都会正常 ...

  6. 平台搭建---Spark提交应用程序---Spark Submit提交应用程序及yarn

    本部分来源,也可以到spark官网查看英文版. spark-submit 是在spark安装目录中bin目录下的一个shell脚本文件,用于在集群中启动应用程序(如***.py脚本):对于spark支 ...

  7. Spark:spark submit参数及调优 perfect

    先看下spark运行原理流程: 我们使用spark-submit提交一个Spark作业之后,这个作业就会启动一个对应的Driver进程. 根据你使用的部署模式(deploy-mode)不同,Drive ...

  8. python使用spark_apache spark - 在python中导入pyspark

    apache spark - 在python中导入pyspark 这是另一个从未回答过的论坛上的别人问题的副本,所以我想我会在这里重新提问,因为我有同样的问题. (见[http://geekple.c ...

  9. spark submit参数及调优

    spark submit参数及调优 原文地址 spark submit参数介绍 你可以通过spark-submit --help或者spark-shell --help来查看这些参数. 使用格式:  ...

最新文章

  1. 过来人的肺腑之言,攻读CV和ML硕士给我带来了什么?
  2. 连载-第1章绪论 1.2嵌入式处理器
  3. Mongodb 添加删除分片与非分片表维护
  4. hdu-4825(01字典树)
  5. 欢乐暑假-高校俱乐部暑期线上编程竞赛奖励机制
  6. 如何禁止普通用户通过rsh登陆计算节点
  7. MFC遍历指定目录下的所有文件/文件夹(不遍历子目录)
  8. aix解锁oracle用户,aix用户被锁定的解决办法
  9. windows安装包删了会有影响吗_win7系统删除系统更新安装包的详细教程
  10. 阿里大数据中台12年建设经验的精华总结!一次性说清!
  11. 使用管理扩展性框架构建模块化控制台应用程序
  12. 优酷APP响应式布局在消费场景的落地之Android篇
  13. 直接获取Program Files目录的API
  14. react native 之setState
  15. 拓端tecdat|Tableau 数据可视化:探索性图形分析新生儿死亡率数据
  16. 2.1 InnoDB存储引擎(概述、版本、体系结构)
  17. MATLAB学习笔记02-MATLAB的数据类型
  18. 小程序 tab 切换点击无效
  19. 木瓜移动每日资讯0602:“店小秘”宣布完成1.35亿元人民币B+轮融资
  20. 张柏芝、谢霆锋、陈冠希近半年行踪关系图,这个图很厉害,可以作为思维导图的工具...

热门文章

  1. Android 手势返回上一界面 亲测可用
  2. linux java乱码怎么解决,linux中显示中文乱码如何解决
  3. jdbc批量调用oracle存储过程,oracle学习笔记(二十三)——JDBC调用存储过程以及批量操作...
  4. java 数组的索引值_按索引访问Java数组位置的值
  5. html电池百分比,显示电池百分比在哪设置
  6. php文件下载教学,php下载文件的代码示例
  7. Java后端职业规划,附学习笔记+面试整理+进阶书籍
  8. 做了6年的Java,java视频教程传智播客
  9. 用Pytorch实现三个优秀的自然图像分割框架!(包括FCN、U-Net和Deeplab,可直接训练预测)
  10. 【深度学习】U-Net 网络分割多分类医学图像解析