【发布时间】:2016-10-04 17:20:43
【问题描述】:
我使用 pyspark 2.0、hadoop 2.7.2。 这是我的代码:
def func(df):
new_df = pd.DataFrame(df['id'])
new_df['num'] = new_df['num'] * 12
return new_df
set = sqlContext.read.parquet("data_set.parquet")
columns = set.columns
map_res = set.rdd.mapPartitions(lambda iter_: func(pd.DataFrame(list(iter_),
columns=columns)))
现在,我需要将 map_res RDD 保存为 parquet 文件 new.parquet。 有什么办法可以在保存之前不创建大型数据框的情况下做到这一点?或者有没有可能单独保存RDD的每个分区,然后合并所有保存的文件?
附:由于它的大小非常大,我想在不创建数据框的情况下进行管理。
【问题讨论】:
-
@santon 似乎需要将所有单个数据帧合并成一个保留模式的大数据帧。将它们保留为 RDD 的元素将不允许像使用 DataFrame 那样对结果进行操作。
-
@ИванСудос 正确,所以我不希望所有数据都移动到一个节点
-
@santon 当您将管道制作为单个镶木地板文件时,因为参数更容易处理
标签: python hadoop apache-spark pyspark rdd