在worker节点上将pyspark rdd分区作为numpy处理

kse8i1jr  于 2021-05-19  发布在  Spark
关注(0)|答案(1)|浏览(423)

是否可以对Dataframe进行分区,然后并行地将Dataframe分区转换为numpy并使用它们(例如,用于培训来自scikit learn的一些学习者)?
例如,我尝试了这个方法,但得到了一个索引错误: IndexError: too many indices for array .

def files_to_numpy(data):
  data_np = np.array(data)
  X = data_np[:, [0, 2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19]]
  y = data_np[:,1]
data.rdd.map(files_to_numpy)

如果我想处理驱动程序上的数据,我必须运行 collect() 在转换之后,然后使用索引语法,但是我想在workers上并行运行此操作(理想情况下,还包括以下所有培训步骤,从而生成几个经过培训的学习者示例)。

cqoc49vn

cqoc49vn1#

你可以用 data.rdd.mapPartitions(func) 它将为worker上的每个分区执行。看起来您正在使用RDDAPI,它的级别非常低,很难使用。我建议您使用更安全、更简单的dataframeapi。
在那里,你也可以用

df.foreachPartition(func)

pyspark foreachpartition-代码在哪里执行

相关问题