python - PySpark 的 addPyFile 方法使 SparkContext None

标签 python apache-spark pyspark

我一直在努力do this .在 PySpark shell 中,我将 SparkContext 作为 sc 获取。但是当我使用 addPyFile 方法时,它使生成的 SparkContext None:

>>> sc2 = sc.addPyFile("/home/ec2-user/redis.zip")
>>> sc2 is None
True

怎么了?

最佳答案

下面是source code to pyspark's (v1.1.1) addPyFile . (在我写这篇文章时,官方 pyspark 文档中 1.4.1 的源链接已损坏)

它返回None,因为没有return语句。另请参阅:in python ,if a function doesn't have a return statement,what does it return?

所以,如果你执行 sc2 = sc.addPyFile("mymodule.py") 当然 sc2 将是 None 因为 .addPyFile() 不返回任何东西!

相反,只需调用 sc.addPyFile("mymodule.py") 并继续使用 sc 作为 SparkContext

def addPyFile(self, path): 
635          """ 
636          Add a .py or .zip dependency for all tasks to be executed on this 
637          SparkContext in the future.  The C{path} passed can be either a local 
638          file, a file in HDFS (or other Hadoop-supported filesystems), or an 
639          HTTP, HTTPS or FTP URI. 
640          """ 
641          self.addFile(path) 
642          (dirname, filename) = os.path.split(path)  # dirname may be directory or HDFS/S3 prefix 
643   
644          if filename.endswith('.zip') or filename.endswith('.ZIP') or filename.endswith('.egg'): 
645              self._python_includes.append(filename) 
646              # for tests in local mode 
647              sys.path.append(os.path.join(SparkFiles.getRootDirectory(), filename)) 

关于python - PySpark 的 addPyFile 方法使 SparkContext None,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32284657/

相关文章:

python - 根据第一个字符的出现分隔字符串列

java - 无法通过 MongoDB 连接器使用 Spark SQL 查询 MongoDB

apache-spark - 无法使用 pyspark 从 json 读取数据

python - 有关 Azure IoT 中心和树莓派的建议

python - 稀疏最小二乘回归

apache-spark - SPARK_SUBMIT_OPTIONS 中的 CPS 是什么?

apache-spark - Spark/k8s:如何在客户端模式下在现有kubernetes集群上安装Spark 2.4?

python - 通过另一个索引或值过滤 DataFrame 索引

python - 如何从字符串中删除特定字符

python - 从 PySpark 中 Groupby 之后的另一列的值获取最小值和最大值