将多个numpy数组加载到spark rdd的最快方法?

时间:2016-06-27 22:35:32

标签: numpy pandas apache-spark pyspark spark-dataframe

我是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阵列感兴趣。)

1 个答案:

答案 0 :(得分:0)

对于我的应用程序,我使用了sparkit-learn项目中的类ArrayRDD来将numpy数组加载到spark RDD中。我没有抱怨,但你的里程可能会有所不同。