pass编码选项

5gfr0r5j  于 2021-07-12  发布在  Spark
关注(0)|答案(1)|浏览(346)

我有固定长度的文件编码在iso-8859-1.spark 2.4是不尊重作为选项传递的编码。
下面是示例代码(字符已损坏)。

g_df = g_spark.read.option("encoding", "ISO-8859-1").text(loc)
g_df.repartition(1).write.csv(path=loc, header="true", mode="overwrite", encoding="ISO-8859-1")

然而,当我把它读作csv文件时,字符按预期存储。

g_df = g_spark.read.option("encoding", "ISO-8859-1").csv(loc)
g_df.repartition(1).write.csv(path=loc, header="true", mode="overwrite", encoding="ISO-8859-1")

看起来spark不支持文本方法的编码。由于这是固定长度的文件,所以我不能使用csv方法。
你能建议一条出去的路吗

628mspwn

628mspwn1#

文本方法不支持编码,所以我尝试了RDDAPI,这对我很有用。
下面是示例代码

encoded_rdd = sc.textFile(loc, use_unicode=False).map(lambda x: x.decode("iso-8859-1"))
encoded_df = encoded_rdd.map(Row("val")).toDF()

相关问题