Опция Spark: inferSchema vs header = true - PullRequest
1 голос
/ 08 июля 2019

Ссылка на pyspark: разница в производительности для spark.read.format ("csv") и spark.read.csv

Я думал, что мне нужны .options("inferSchema" , "true") и .option("header", "true") для печати моих заголовков, но, очевидно, я все еще мог печатать мой CSV с заголовками.

В чем разница между заголовком и схемой? Я не совсем понимаю значение «inferSchema: автоматически выводит типы столбцов. Для этого требуется один дополнительный проход по данным и по умолчанию значение false».

1 Ответ

3 голосов
/ 08 июля 2019

Заголовок и схема - это разные вещи.

Заголовок:

Если файл csv имеет заголовок (имена столбцов в первой строке), тогда установите header=true.Это будет использовать первую строку в CSV-файле в качестве имен столбцов данных.Установка header=false (опция по умолчанию) приведет к созданию кадра данных с именами столбцов по умолчанию: _c0, _c1, _c2 и т. Д.

Установка этого значения в true или false должна основываться на вашем вводефайл.

Схема:

Схема, упоминаемая здесь, является типом столбца.Столбец может иметь тип String, Double, Long и т. Д. Использование inferSchema=false (опция по умолчанию) даст кадр данных, где все столбцы являются строками (StringType).В зависимости от того, что вы хотите сделать, строки могут не работать.Например, если вы хотите добавить числа из разных столбцов, тогда эти столбцы должны иметь некоторый числовой тип (строки не будут работать).

При установке inferSchema=true Spark автоматически пройдет через файл csvи выведите схему каждого столбца.Это требует дополнительного прохода по файлу, что приведет к чтению файла с inferSchema, установленным в true, что медленнее.Но взамен у фрейма данных, скорее всего, будет правильная схема с учетом его ввода.


В качестве альтернативы чтению csv с inferSchema вы можете предоставить схему во время чтения.Преимущество этого в том, что он на быстрее, чем выводит схему , в то же время предоставляя фрейм данных с правильными типами столбцов.Кроме того, для файлов CSV без строки заголовка имена столбцов могут быть заданы автоматически.Чтобы предоставить схему, см., Например: Предоставить схему при чтении CSV-файла в качестве кадра данных

...