r - Sparklyr忽略行定界符

原文 标签 r csv sparklyr

我正在尝试在Sparklyr中读取2GB〜(5mi行)的.csv文件,内容如下:

bigcsvspark <- spark_read_csv(sc, "bigtxt", "path", 
                              delimiter = "!",
                              infer_schema = FALSE,
                              memory = TRUE,
                              overwrite = TRUE,
                              columns = list(
                                  SUPRESSED COLUMNS AS = 'character'))


并得到以下错误:

Job aborted due to stage failure: Task 9 in stage 15.0 failed 4 times, most recent failure: Lost task 9.3 in stage 15.0 (TID 3963,
10.1.4.16):  com.univocity.parsers.common.TextParsingException: Length of parsed input (1000001) exceeds the maximum number of characters defined in your parser settings (1000000). Identified line separator characters in the parsed content. This may be the cause of the error. The line separator in your parser settings is set to '\n'. Parsed content: ---lines of my csv---[\n]
---begin of a splited line --- Parser Configuration: CsvParserSettings:     ... default settings ...


和:

CsvFormat:
    Comment character=\0
    Field delimiter=!
    Line separator (normalized)=\n
    Line separator sequence=\n
    Quote character="
    Quote escape character=\
    Quote escape escape character=null Internal state when error was thrown:
        line=10599, 
        column=6, 
        record=8221, 
        charIndex=4430464, 
        headers=[---SUPRESSED HEADER---], 
        content parsed=---more lines without the delimiter.---


如上所示,在某些时候,行分隔符开始被忽略。在纯R中,只要read.csv传递路径和定界符,就可以毫无问题地读取它。

最佳答案

看起来文件不是真正的CSV,我想知道spark_read_text()在这种情况下是否会更好。您应该能够将所有行带入Spark,并将行拆分为内存中的字段,最后一部分将是最棘手的。

相关文章:

r - ggplot2中标签中的下标

php - 使用fputcsv将mysql数据写入csv文件时省略列

bash - 多行CSV:使用不同的分隔符在单行上输出,双引号输入行

r - Sparklyr:从朴素贝叶斯模型中提取条件概率

r - 使用来自本地桌面的sparklyr读取存储在hdfs上的csv文件

python - 列举所有可能的两个成员组星座

r - 如何在R中选择个案?

r - 使用ggplot2的组合箱线图和直方图

java - 导出CSV文件-JAX RS-REST-AJAX