【问题标题】:pyspark or sparklyr: read csv with text containing newline characters; delimited by "|"pyspark 或 sparklyr:使用包含换行符的文本读取 csv;由“|”分隔
【发布时间】:2021-05-03 11:44:27
【问题描述】:

我正在尝试将一个大型 (~20 GB) csv 文件读入 Spark。该文件有一个字段包含带有换行符 (\n) 的文本,并且该文本没有用引号引起来。文件中有一个竖线分隔符(“|”)指示新行何时开始。我可以使用以下代码在 pandas 中读取此文件,但我想要 pyspark 或 sparklyr 解决方案。这可能吗?

read_file = pd.read_table(
    './filepath/file.csv', 
    engine = 'c',
    lineterminator="|",
    names=['text'],
    encoding ='latin1',
    nrows = 2_000
)

输出应如下所示(在原始文件中,最后一个“\r\n”之后有一个管道): Pandas output

【问题讨论】:

  • 你能指定一些源数据和你想要的输出吗?

标签: csv apache-spark pyspark delimiter sparklyr


【解决方案1】:

您可以在 Spark CSV 阅读器中使用 lineSep 关键字参数:

df = spark.read.csv(
    './filepath/file.csv',
    lineSep='|',
    encoding='latin1'
).toDF('names')

【讨论】:

    【解决方案2】:

    这似乎有效:

    df = spark.read.text(
        './Downloads/vms-extractedReportText-utf8.csv',
        lineSep="|"
    ).toDF('names')
    

    【讨论】:

    • 这基本上是@mck 提供的!
    猜你喜欢
    • 2021-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多