0

如何按 X 列写入分区并写入没有 X 列值的数据?

我有一个包含两列的数据框,其值如下所示。

pkey 字符串,output_value 字符串

价值观为

pkey ===== output_value

100  ===== 100-Hundred-some-text-value

100  ===== 101-Hundred-some-text-value

200  ===== 200-TwoHundred-some-text-value

300  ===== 300-ThreeHundred-some-text-value

如何使用按 pkey 值分区并仅写入 output_value 来写入此数据帧?

输出:

......./target-dir/stage-100/somefilename_100.csv

......./target-dir/stage-200/somefilename_200.csv

......./target-dir/stage-300/somefilename_300.csv

somefilename_100.csv 应该有以下条目:

100-Hundred-some-text-value

101-Hundred-some-text-value

somefilename_200.csv 应该有以下条目:

200-TwoHundred-some-text-value

somefilename_300.csv 应该有以下条目:

300-ThreeHundred-some-text-value

我尝试了下面的代码,但编译器期望数据框应该有两列。

df.select('output_value')
   .write()
   .partitionBy('pkey') 
4

1 回答 1

0

通过仅选择output_value您当时正在剥离pkey列的数据框

partitionBy 将pkey改为按列输出您的数据,将其从文件中的最终输出中排除

删除该select子句就足以完成此任务

df.write.partitionBy("pkey") \
        .mode("overwrite") \
        .csv("<path>")

但是,每个分区中的文件名将以part-*

于 2021-10-10T10:16:02.263 回答