我是Spark的新手。在我的应用程序中,我想从许多numpy数组创建一个RDD。每个numpy数组为(10,000,5,000)。目前,我正在尝试以下操作:
rdd_list = []
for np_array in np_arrays:
pandas_df = pd.DataFrame(np_array)
spark_df = sqlContext.createDataFrame(pandas_df) ##SLOW STEP
rdd_list.append(spark_df.rdd)
big_rdd = sc.union(rdd_list)
所有的步骤都很快,除了将Pandas数据框转换为Spark数据框非常慢。如果我使用numpy数组的一个子集,例如(10,000,500),则需要几分钟才能将其转换为Spark数据帧。但是如果我使用完整的numpy数组(10,000,5,000),它就会挂起。
我能做些什么来加快我的工作流程吗?或者我应该用一种完全不同的方式来做这件事?(仅供参考,我有点坚持最初的numpy数组)对于我的应用程序,我使用了spark -learn项目中的ArrayRDD
类来将numpy数组加载到spark rdd中。