2017-10-13 7 views
5

私はとsparklyrが2GB〜(5miライン)の.csvファイルを読み込むしようとしている:Sparklyr無視して行区切り文字

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がパスとデリミタを渡します。

+0

著者が示唆するように、不要な行を削除/識別するためにDplyrsフィルタを試してください。 https://github.com/rstudio/sparklyr/issues/83 – Igor

+0

私はそれを試してみると、最初はバッファがデータを扱うことができないと思っていましたが、データが大雑把なので、データの問題、私はまた、Parquetに変換するScalaスクリプトを記述しようとしています。 –

答えて

1

ファイルが実際にCSVではないように見えますが、spark_read_text()がこの状況でうまくいくかどうかは疑問です。あなたは、すべての行をSparkに持ってきて、行をメモリ内のフィールドに分割することができます。最後の部分は、最も難しいでしょう。

関連する問題