spark:生成txt文件

brgchamk  于 2021-05-27  发布在  Spark
关注(0)|答案(2)|浏览(704)

我有以parqueue格式存储的数据,我想从spark生成分隔文本文件,每个文件的行限制为100行。这能从spark笔记本上处理吗?我正在建立adf管道,触发这个笔记本和假设输出的文本文件类似以下格式的东西请建议我可能的方式。
5431732167 899 1011381 1测试字符串5431732163 899 912测试字符串5431932119 899 108808 40测试字符串5432032116 899 1082223 40测试字符串
我也有一个需要处理的文本文件批,并加载到数据库中,请建议这样做的选项。
提前谢谢。
谢谢,马诺。

2w2cym1i

2w2cym1i1#

这个问题似乎是功能上的重复:如何从dataframe获取1000条记录并使用pyspark写入文件?
在运行写入csv文件的作业之前,请设置 maxRecordsPerFile ,因此在spark sql中:

set spark.sql.files.maxRecordsPerFile = 100
vxf3dgd4

vxf3dgd42#

您应该能够将maxrecordsperfile与csv输出一起使用。但这并不能保证只有一个文件的记录数少于100条,只能保证没有超过100行的文件。spark并行写入,因此无法跨节点确保这一点。

df
  .write
  .option("maxRecordsPerFile", 100)
  .csv(outputPath)

如果数据非常小,可以将其合并到一个分区,并确保只有一个文件大于100行,但这样就失去了并行处理速度的优势(在最后一次计算和写入过程中,大多数集群都将不使用)
对于写入数据库,解决方案取决于特定的数据库。许多数据库支持的一个示例是jdbc,spark可以用它读/写数据,请参见:https://spark.apache.org/docs/latest/sql-data-sources-jdbc.html

相关问题