【问题标题】:How to read CSV file with delimiter different than comma?如何读取分隔符不同于逗号的 CSV 文件?
【发布时间】:2020-03-20 10:17:36
【问题描述】:

我有一个带有文本列的 PySpark 数据框。如果 Pyspark 数据框包含“,”,它似乎会截断文本列的内容。

这就是我保存文件的方式。


read_file = spark.read.csv('C://data/myfile.csv', header = True, inferSchema = True)

# Do some processing then save file as csv
read_file = read_file.select(read_file.text_col.cast(StringType())
read_file.coalesce(1).write.csv('text.csv', mode = 'overwrite', header = True)

Sample of text:

Bot[10/26/2019 09:21:44]: Hi there, welcome to XXX. I will be your virtual assistant today.

After saving it will output this:
>>> Bot[10/26/2019 09:21:44]: Hi there

我已尝试将该列转换为 StringType,但如果它包含“,”,它仍然会截断该列。

【问题讨论】:

  • 另外,您是否尝试过使用quoteAll 参数? link
  • @samkart我刚试了quoteAll = True,结果是一样的。 ',' 之后仍然截断。目前,作为一种解决方法,我必须从原始文件中删除所有“,”。
  • 尝试将文件保存为tsv 一次,看看结果是否相同?我认为是因为 Hi there, welcome to XXX 中的逗号导致您遇到了问题。
  • 也尝试使用文本文件。 linkread_file.write.text(path)
  • 使用sep=None参数并尝试。调整分隔符的值并查看结果。尝试使用值 '~' 或 '\' 并检查您的结果。

标签: csv apache-spark pyspark apache-spark-sql


【解决方案1】:

tl;dr.option("delimiter", "|") 与输入数据集使用的任何分隔符(分隔符)一起使用。


我有带有文本列的 PySpark 数据框。

那建议改用text()(不是csv())方法。

如果 Pyspark 数据框包含“,”,它似乎会截断文本列的内容。

这是csv() 方法(实际上是CSV 数据源),同时根据默认配置加载数据集,假定,(逗号)作为分隔符。它不会截断,而是根据分隔符解析行。

使用delimiter(或sep)选项应该“修复”它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多