从databrick在adls gen 1中写入tsv文件时行分隔符更改

gwo2fgha  于 2021-05-27  发布在  Spark
关注(0)|答案(1)|浏览(471)

我想将tsv文件保存到adls gen1。使用下面的命令保存数据,但它将行分隔符写入“\n”(lf)我想写入行分隔符“\r\n”

df.coalesce(1).write.mode("overwrite").format("csv").options(delimiter="\t",header="true",nullValue= None,lineSep ='\r\n').save(gen1temp)

我有一个400+列和2m行和6gb的文件大小。请帮助优化解决方案。

ogq8wdun

ogq8wdun1#

支持 lineSep csv文件的选项只存在于spark3.0中,在早期版本(如2.4)中不存在,所以它被忽略了。
最初,我考虑了以下解决方法-append \r 到最后一列:

from pyspark.sql.functions import concat, col, lit

data = spark.range(1, 100).withColumn("abc", col("id")).withColumn("def", col("id"))
cols = map(lambda cn: col(cn), data.schema.fieldNames())
cols[-1] = concat(cols[-1].cast("string"), lit("\r"))
data.select(cols).write.csv("1.csv")

但不幸的是,它不工作-它看起来像是剥离结束空白时,写入数据到csv。。。

相关问题