Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.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
使用Spark Arrow在PySpark的工作节点中运行任意python代码_Python_Apache Spark_Pyspark_Apache Spark Sql - Fatal编程技术网

使用Spark Arrow在PySpark的工作节点中运行任意python代码

使用Spark Arrow在PySpark的工作节点中运行任意python代码,python,apache-spark,pyspark,apache-spark-sql,Python,Apache Spark,Pyspark,Apache Spark Sql,我需要实现一个pyspark应用程序,它可以在工作节点上并行运行一些任意的python函数代码。在读了一些书之后,我想我已经想出了一个使用火花箭的方法,但我想看看是否有人能让我知道这是一个好的游戏计划 上下文: 我在磁盘上有一个按ID分区的数据集。每个分区包含数千条记录。我将要编写的函数需要来自两个ID的数据进行一次计算。我需要同时计算多个ID对的结果。ID不限于一对。换句话说,ID1可以与ID2和ID3两者配对 游戏计划: 创建一个包含任意函数输出所需的所有列的数据框。这个数据帧将有N个行(N

我需要实现一个pyspark应用程序,它可以在工作节点上并行运行一些任意的python函数代码。在读了一些书之后,我想我已经想出了一个使用火花箭的方法,但我想看看是否有人能让我知道这是一个好的游戏计划

上下文:

我在磁盘上有一个按ID分区的数据集。每个分区包含数千条记录。我将要编写的函数需要来自两个ID的数据进行一次计算。我需要同时计算多个ID对的结果。ID不限于一对。换句话说,ID1可以与ID2和ID3两者配对

游戏计划:

  • 创建一个包含任意函数输出所需的所有列的数据框。这个数据帧将有N个行(N是我需要处理的ID对的数量),只有包含ID1和ID2的列才会有数据

  • 在创建的数据帧上运行以下伪代码:

    myDataframe.coalesce(1).partitionBy(IDColumn1,IDColumn2).groupBy(IDColumn1,IDColumn2).ApplyPandas(myArbitraryFunction)

    “myDataframe”永远不会太大,所以我不认为coalesce(1)会导致任何内存问题

  • 编写“myArbitraryFunction”,以便它根据上面指定的IDColumns从分区数据集中提取数据。这将返回一个数据帧,其中的列在步骤1中列出,行数为X

  • 假设:

    从我所读到的内容来看,我相信这将导致在每个组中尽可能多的节点上分配“myArbitraryFunction”的运行(取决于集群的大小和ID对的数量),高效地从磁盘上的分区数据集读取,使用任意python代码处理我需要的所有结果,最后我将得到一个数据帧,其中有N个分区(ID对的数量),每个分区将容纳X行

    如果有人能告诉我,根据我的游戏计划,我对后台处理的假设是否正确,我将不胜感激

    注意:我愿意接受不同方法的建议