Как spark читает файлы текстового формата

У меня есть набор данных в S3 в текстовом формате (.gz), и я использую spark.read.csv для чтения файла в spark.

Это около 100 ГБ данных, но он содержит 150 столбцов. Я использую только 5 столбцов (поэтому я уменьшаю объем данных) и выбираю только 5 столбцов.

Для такого сценария искра сканирует полные 100 ГБ данных или разумно фильтрует только эти 5 столбцов, не сканируя все столбцы (например, в форматах столбцов)?

Любая помощь в этом будет оценена по достоинству.

imp_feed = spark.read.csv('s3://mys3-loc/input/', schema=impressionFeedSchema, sep='\t').where(col('dayserial_numeric').between(start_date_imp,max_date_imp)).select("col1","col2","col3","col4")

person braj    schedule 05.01.2017    source источник
comment
Добавьте свой код, который считывает данные из S3, и выберите столбцы.   -  person Yaron    schedule 05.01.2017
comment
Вы шутите? CSV не является столбцовым форматом, вы должны анализировать его последовательно, байт за байтом, просто для обнаружения разделителей столбцов/записей. Кроме того, сжатый файл GZip необходимо распаковывать последовательно, бит за битом. Кроме того, AFAIK, файлы S3 не предназначены для произвольного доступа.   -  person Samson Scharfrichter    schedule 05.01.2017
comment
да, это мой страх. У нас есть ежедневные загрузки в S3, и они в текстовом формате и в формате GZip. Таким образом, в основном он полностью находится в искре (более того, файлы gzip увеличиваются в 5-6 раз после его распаковки)   -  person braj    schedule 05.01.2017


Ответы (1)


сделайте шаг 1 вашего рабочего процесса процессом чтения файла CSV и сохранения его в виде быстро сжатых файлов ORC или parquet.

затем идите к тому, кто создает эти файлы, и скажите им, чтобы они остановили это. По крайней мере, они должны переключиться на Avro + Snappy, так как проще разделить первоначальный синтаксический анализ и миграцию в столбчатый формат.

person stevel    schedule 06.01.2017