Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在工作节点上安装SPARK模块_Python_Numpy_Apache Spark_Pyspark - Fatal编程技术网

Python 在工作节点上安装SPARK模块

Python 在工作节点上安装SPARK模块,python,numpy,apache-spark,pyspark,Python,Numpy,Apache Spark,Pyspark,我正在cloudera环境中以独立模式运行SPARK 1.3。我可以从ipython笔记本上运行pyspark,但只要添加第二个工作节点,我的代码就会停止运行并返回错误。 我很确定这是因为我的主节点上的模块对工作节点不可见。 我尝试导入numpy,但没有成功,即使我通过anaconda将numpy安装到我的工人身上。我用同样的方法在主人和工人身上安装了巨蟒 但是,按照Josh Rosen的建议,我确保在工作节点上安装了库 然而,我似乎还是遇到了一些问题。包括我的工人不认识abs命令这一事实。这

我正在cloudera环境中以独立模式运行SPARK 1.3。我可以从ipython笔记本上运行pyspark,但只要添加第二个工作节点,我的代码就会停止运行并返回错误。 我很确定这是因为我的主节点上的模块对工作节点不可见。 我尝试导入numpy,但没有成功,即使我通过anaconda将numpy安装到我的工人身上。我用同样的方法在主人和工人身上安装了巨蟒

但是,按照Josh Rosen的建议,我确保在工作节点上安装了库

然而,我似乎还是遇到了一些问题。包括我的工人不认识abs命令这一事实。这是python 2.6中的标准

我运行的代码来自以下帖子:

def isprime(n):
"""
检查整数n是否为素数
"""
#确保n是一个正整数
n=abs(int(n))
#0和1不是素数
如果n<2:
返回错误
#2是唯一的偶数素数
如果n==2:
返回真值
#所有其他偶数都不是素数
如果不是n&1:
返回错误
#范围从3开始,只需要增加n的平方根
#对于所有奇数
对于范围(3,int(n**0.5)+1,2)内的x:
如果n%x==0:
返回错误
返回真值
#创建从0到1000000的数字RDD
nums=sc.parallelize(xrange(1000000))
#计算RDD中的素数
打印nums.filter(isprime.count)()

我经常将anaconda发行版与PySpark一起使用,并发现设置
PySpark\u PYTHON
变量非常有用,该变量指向anaconda发行版中的PYTHON二进制文件。我发现,否则我会犯很多奇怪的错误。您可以通过运行
rdd.map(lambda x:sys.executable).distinct().collect()
来检查python是否正在使用。我怀疑它没有指向正确的位置

在任何情况下,我建议将路径和环境变量的配置包装在脚本中。我使用以下方法

def configure_spark(spark_home=None, pyspark_python=None):
    spark_home = spark_home or "/path/to/default/spark/home"
    os.environ['SPARK_HOME'] = spark_home

    # Add the PySpark directories to the Python path:
    sys.path.insert(1, os.path.join(spark_home, 'python'))
    sys.path.insert(1, os.path.join(spark_home, 'python', 'pyspark'))
    sys.path.insert(1, os.path.join(spark_home, 'python', 'build'))

    # If PySpark isn't specified, use currently running Python binary:
    pyspark_python = pyspark_python or sys.executable
    os.environ['PYSPARK_PYTHON'] = pyspark_python

当您指向anaconda二进制文件时,您还应该能够导入安装在其
站点软件包
目录中的所有软件包。这项技术也适用于conda环境。

abs()
在spark 1.3.1中的工作程序上运行良好,可以检查
pyspark
中工作程序的python版本号:
import sys
rdd=sc.parallelize(xrange(30),30)
rdd.map(lambda x:sys.version).distinct().collect()
2.7.9版的python仅适用于使用
abs()的集群工作人员。
谢谢,我通过将Anaconda安装到/opt/Anaconda解决了所有问题。我还设置了PYSPARK\u python=/opt/Anaconda/bin/python2.7我还将Anaconda添加到etc/profile中的路径变量中,解决了所有问题。
def configure_spark(spark_home=None, pyspark_python=None):
    spark_home = spark_home or "/path/to/default/spark/home"
    os.environ['SPARK_HOME'] = spark_home

    # Add the PySpark directories to the Python path:
    sys.path.insert(1, os.path.join(spark_home, 'python'))
    sys.path.insert(1, os.path.join(spark_home, 'python', 'pyspark'))
    sys.path.insert(1, os.path.join(spark_home, 'python', 'build'))

    # If PySpark isn't specified, use currently running Python binary:
    pyspark_python = pyspark_python or sys.executable
    os.environ['PYSPARK_PYTHON'] = pyspark_python