Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/323.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.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中分发文件,例如--py文件?_Python_Apache Spark_Pyspark_Spark Streaming - Fatal编程技术网

Python 为什么我们需要在Spark中分发文件,例如--py文件?

Python 为什么我们需要在Spark中分发文件,例如--py文件?,python,apache-spark,pyspark,spark-streaming,Python,Apache Spark,Pyspark,Spark Streaming,例如,正如我在SO的许多博客和帖子中所读到的(在前几段),引用如下: 不是为了进入太多的细节,而是当你运行不同的 RDD(映射、平面映射、过滤器和其他)上的转换 转换代码(闭包)为: 在驱动程序节点上序列化 已发送到群集中的相应节点 反序列化 并最终在节点上执行 好的,以下是我的看法: 我在驱动程序中定义了一些自定义转换/操作函数,然后这些自定义函数将被序列化到所有执行器以运行作业 那么,向所有节点发送额外的py文件有什么意义呢?由于执行器需要的所有内容都将被序列化到它们身上,这里到底是怎么回事

例如,正如我在SO的许多博客和帖子中所读到的(在前几段),引用如下:

不是为了进入太多的细节,而是当你运行不同的 RDD(映射、平面映射、过滤器和其他)上的转换 转换代码(闭包)为:

  • 在驱动程序节点上序列化
  • 已发送到群集中的相应节点
  • 反序列化
  • 并最终在节点上执行
  • 好的,以下是我的看法:

    我在驱动程序中定义了一些自定义转换/操作函数,然后这些自定义函数将被序列化到所有执行器以运行作业


    那么,向所有节点发送额外的py文件有什么意义呢?由于执行器需要的所有内容都将被序列化到它们身上,这里到底是怎么回事?

    不确定,但使用spark 2.x和DataFrame API可以避免序列化,并将scala代码发送到节点,而不必处理节点上的额外python容器

    @TheSoyman 101,对不起,我想你不明白我的问题,为什么以及什么时候我们需要使用
    --py files
    将本地文件发送到集群。如果你的python代码中有几个模块呢?您不能只提交主驱动程序,然后期望执行者找到驱动程序试图导入的其余代码。问题是关于Python的,而不是ScalaI。明白了,这就是我写评论的原因。更好地使用DataFrame API这不是一个评论,而是一个答案。一旦你有了更多的代表,你可以发表评论。顺便说一下,Python也有DataFrameAPI,但是Spark 2还是使用Dataset