Как включить многострочное чтение CSV-файла в pyspark - PullRequest
0 голосов
/ 18 ноября 2018

Я читаю файл CSV через PySpark. Это файл с разделителями кареткой. Имеет 5 столбцов. Мне нужно только 3 столбца.

rdd = sc.textFile("test.csv").map(lambda x: x.split("^")).filter(lambda x: len(x)>1).map(lambda x: (x[0], x[2], x[3]))

print rdd.take(5)

Как показано ниже, данные в файле csv содержат многострочные данные в 4-й записи, последней, кроме одного столбца. Из-за этого, хотя файл имеет только 5 записей, искра обрабатывает его как 6 записей. Поэтому я столкнулся с ошибкой индекса вне диапазона.

Данные в файле .csv:

a1^b1^c1^d1^e1
a2^b2^c2^d2^e2
a3^b3^c3^d3^e3
a4^b4^c4^d4 is 
multiline^e4
a5^b5^c5^d5^e5

Как включить multiline при создании от rdd до sc.textFile()?

1 Ответ

0 голосов
/ 21 ноября 2018

В своем анализе я узнал, что это невозможно сделать с помощью sc.textFile (), причина этого в том, что как только мы загрузим файл s3 в rdd, rdd будет иметь список элементов в каждой записи файл s3. На этом уровне каждая строка в мультилинии разбивается на разные записи. Так что это не может быть достигнуто с помощью sc.textFile ().

...