spark csv datasoruce无法写入前导或尾随控制字符

jfgube3f  于 2021-05-27  发布在  Spark
关注(0)|答案(1)|浏览(409)
val value:String = "\u0001"+ "V1" + "\u0002"
val df  = Seq((value)).toDF("f1")
df.show

现在df对于字段f1有适当的值。但是,当使用spark以build csv格式编写以下代码时,^a,^b字符不会显示在输出中。

df.write.format("csv").option("delimiter", "\t").option("codec", "bzip2").save("temp_out")

这里的temp\u out输出没有显示字段f1的任何^a,^b字符
期待一些建议。

t9aqgxwy

t9aqgxwy1#

如果spark的保存操作删除某些字符,您会注意到当您打开csv文件时,这些字节丢失了。首先,看一下 value :

value.getBytes()    # Array[Byte] = Array(1, 86, 49, 2)
``` `saveAsTextFile` 已经有一段时间了,更直截了当一点。如果您无法使用csv选项,这是一个很好的解决方法。

df.rdd.map(_.mkString("\t")).saveAsTextFile("temp_out")

您可能仍然可以使用 `csv` 方法,而不删除任何字符,如下所示(但您需要使用特定的设置进行确认):

spark.read.option("delimiter", "\t").csv("temp_out/").take(1)(0).getString(0).getBytes()

result is Array[Byte] = Array(1, 86, 49, 2)

相关问题