我是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阵列感兴趣。)
答案 0 :(得分:0)
对于我的应用程序,我使用了sparkit-learn项目中的类ArrayRDD
来将numpy数组加载到spark RDD中。我没有抱怨,但你的里程可能会有所不同。