在工作节点上将Pyspark RDD分区作为Numpy处理

2024-05-16 03:27:05 发布

您现在位置:Python中文网/ 问答频道 /正文

是否可以对数据帧进行分区,然后将数据帧分区并行转换为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上并行运行此操作(理想情况下,还需要执行以下所有培训步骤,从而生成学习者的几个经过培训的实例)


Tags: to数据方法numpydata错误npfiles
1条回答
网友
1楼 · 发布于 2024-05-16 03:27:05

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

在那里,你可以实现同样的事情

df.foreachPartition(func)

pySpark forEachPartition - Where is code executed

相关问题 更多 >