我无法从pyspark数据框列表中创建RDD,如下所示:
l = [('Alice', 1)]
df = sqlContext.createDataFrame(l)
m = [('bob', 2)]
df2 = sqlContext.createDataFrame(m)
df_list = [df, df2]
sc.parallelize(df_list)
我得到的错误是:
Py4JError: An error occurred while calling o85.__getnewargs__. Trace:
py4j.Py4JException: Method __getnewargs__([]) does not exist
在parallelize
电话。它使用一个简单的列表,如[1,2,3]
,但当列表的元素成为数据帧时,它似乎失败了......请指教。
我有一个时间序列数据框,可以按列的id
进行分组。由于我需要对每个时间序列数据进行一些计算,我的想法是通过id
将数据帧拆分为多个数据帧,并使每个数据帧成为列表中的元素,因此当我从该列表创建RDD时,我可以并行地对数据帧进行计算。
我使用的是Spark 1.6。 提前谢谢!
答案 0 :(得分:0)
只有当您的数据框具有相同的架构时,这才有效。
df = df.unionAll(df2)
rdd = df.rdd()