2017-10-13 61 views
5

Tôi đang cố gắng để đọc một .csv 2GB ~ (5mi lines) trong sparklyr với:Sparklyr bỏ qua dòng delimiter

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

Và nhận được lỗi sau:

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 ... 

và:

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.--- 

Như được hiển thị ở trên một số điểm, trình tách dòng bắt đầu bị bỏ qua. Trong R thuần khiết có thể được đọc mà không có vấn đề, chỉ cần read.csv đi qua đường dẫn và dấu phân cách.

+0

Theo đề xuất của tác giả, hãy thử bộ lọc Dplyrs để xóa/xác định hàng không mong muốn. https://github.com/rstudio/sparklyr/issues/83 – Igor

+0

Tôi sẽ thử nó, lúc đầu tôi đã nghi ngờ rằng bộ đệm không thể xử lý dữ liệu trắng, nhưng khi dữ liệu là một mớ hỗn độn lớn, nó có thể là một vấn đề dữ liệu, tôi cũng đang cố gắng viết một kịch bản Scala để chuyển đổi thành Parquet. –

Trả lời

1

có vẻ như tệp không thực sự là CSV, tôi tự hỏi liệu spark_read_text() có hoạt động tốt hơn trong tình huống này hay không. Bạn sẽ có thể đưa tất cả các dòng vào Spark, và phân chia các dòng vào các lĩnh vực trong bộ nhớ, Đó là phần cuối cùng, sẽ là khó khăn nhất.

Các vấn đề liên quan