相关疑难解决方法(0)

我似乎无法在Spark上使用--py文件来工作

我在Spark上使用Python时遇到了问题.我的应用程序有一些依赖项,例如numpy,pandas,astropy等.我不能使用virtualenv来创建一个包含所有依赖项的环境,因为除了HDFS之外,集群上的节点没有任何公共mountpoint或文件系统.因此我坚持使用spark-submit --py-files.我将site-packages的内容打包到一个ZIP文件中并像使用--py-files=dependencies.zip选项一样提交作业(最简单的方法是在Spark执行器节点上安装Python依赖项?).但是,群集上的节点似乎仍然没有看到内部的模块,并且ImportError在导入numpy时它们会抛出这样的内容.

File "/path/anonymized/module.py", line 6, in <module>
    import numpy
File "/tmp/pip-build-4fjFLQ/numpy/numpy/__init__.py", line 180, in <module>   
File "/tmp/pip-build-4fjFLQ/numpy/numpy/add_newdocs.py", line 13, in <module>
File "/tmp/pip-build-4fjFLQ/numpy/numpy/lib/__init__.py", line 8, in <module>
    #
File "/tmp/pip-build-4fjFLQ/numpy/numpy/lib/type_check.py", line 11, in <module>
File "/tmp/pip-build-4fjFLQ/numpy/numpy/core/__init__.py", line 14, in <module>
ImportError: cannot import name multiarray
Run Code Online (Sandbox Code Playgroud)

当我切换到virtualenv并使用本地pyspark shell时,一切正常,所以依赖都在那里.有谁知道,什么可能导致这个问题,以及如何解决它?

谢谢!

python apache-spark pyspark

24
推荐指数
3
解决办法
3万
查看次数

将pyspark中的Python模块传送到其他节点

如何将C编译模块(例如,python-Levenshtein)发送到Spark集群中的每个节点?

我知道我可以使用独立的Python脚本在Spark中发布Python文件(下面的示例代码):

from pyspark import SparkContext
sc = SparkContext("local", "App Name", pyFiles=['MyFile.py', 'MyOtherFile.py'])
Run Code Online (Sandbox Code Playgroud)

但是在没有".py"的情况下,我该如何运送模块?

python apache-spark

23
推荐指数
1
解决办法
2万
查看次数

如何在pyspark中获取Python库?

我想在pyspark中使用matplotlib.bblpath或shapely.geometry库.

当我尝试导入其中任何一个时,我得到以下错误:

>>> from shapely.geometry import polygon
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
ImportError: No module named shapely.geometry
Run Code Online (Sandbox Code Playgroud)

我知道模块不存在,但是如何将这些包带到我的pyspark库?

python python-2.7 shapely pyspark

11
推荐指数
2
解决办法
3万
查看次数

如何将pip / pypi安装的python软件包转换为zip文件以在AWS Glue中使用

我正在使用AWS Glue和PySpark ETL脚本,并且想要使用辅助库,例如作为google_cloud_bigquery我的PySpark脚本的一部分。

文件指出,这应该是可能的之前的Stack Overflow讨论,尤其是其中一个答案中的一条评论似乎提供了进一步的证明。但是,我不清楚该怎么做。

因此,目标是将pip installed软件包转换为一个或多个zip文件,以便能够仅将软件包托管在S3上并指向它们,如下所示:

s3://bucket/prefix/lib_A.zip,s3://bucket_B/prefix/lib_X.zip

如何认为应该做的是没有明确规定的任何地方我已经看了。

即我如何pip install打包,然后将其转换为可上传到S3 的zip文件,以便PySpark可以将其与这样的S3 URL一起使用?

通过使用命令,pip download我已经能够提取这些库,但是默认情况下它们不是.zip文件,而是.whl文件或.tar.gz

..so不知道该怎么做才能将它们转换为AWS Glue可以消化的zip文件。也许有了.tar.gz,我可以先将它们备份,tar -xf然后再zip备份,但是whl文件呢?

python amazon-s3 amazon-web-services pyspark aws-glue

2
推荐指数
1
解决办法
1761
查看次数