Spark - Правильно ли я прочитал csv? - PullRequest
0 голосов
/ 22 октября 2018

Я читаю CSV-файл в Spark, используя:

df = spark.read.format (file_type) .options (header = 'true', quote = '\ "', ignoreLeadingWhiteSpace = 'true ', inferSchema =' true '). load (file_location)

Когда я попробовал это с образцами данных CSV из другого источника и сделал diplsay (df), он показал аккуратно отображаемую строку заголовка, за которой следовали данные.

Когда я пробую его на моих основных данных, который имеет 40 столбцов и миллионы строк, он просто отображает первые 20 заголовков столбцов и не содержит строк данных.

Это нормальное поведение илиНеправильно ли он читается?

Обновление: я отмечу вопрос как ответивший, поскольку полезны советы, приведенные ниже.+ -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + | �� «periodID», «DAXDate», «Название страны», «Год"," TransactionDate "," QTR "," Номер клиента "," Имя клиента "," Город клиента "," Код типа документа "," Номер заказа "," Код продукта "," Описание продукта "," Продажа UOM ", «Код суб-франшизы», «Описание суб-франшизы», «Основной код продукта», «Основное описание продукта», «Минимальный код продукта», «Минимальное описание продукта», «Номер счета-фактуры», «Дата счета-фактуры», «КлассТорговый идентификатор »,« Класс торговли »,« Регион »,« AmountCurrencyType »,« Расширенная стоимость »,« Валовые торговые продажи »,« Чистые торговые продажи »,« Итого (внешняя стандартная стоимость) »,« AdjustmentType »,« ExcludeComment "," CurrencyCode "," fxRate "," Количество "," FileName "," RecordCount "," Категория продукта "," Direct "," ProfitCenter "," ProfitCenterRegion "," ProfitCenterCountry "|+ -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Мне придется вернуться к основам предварительного просмотра CSV втекстовый редактор, чтобы узнать, каков правильный формат для этого файла, чтобы выяснить, что происходит не так.Обратите внимание, мне пришлось обновить свой код до следующего, чтобы иметь дело с разделителем каналов:

df = spark.read.format(file_type).options(header='true', quote='\"', delimiter='|',ignoreLeadingWhiteSpace='true',inferSchema='true').load(file_location)

Ответы [ 3 ]

0 голосов
/ 22 октября 2018

Для фреймов данных Spark нормально отображаются ограниченные строки и столбцы.Ваше чтение данных не должно быть проблемой.Однако, чтобы подтвердить, что вы правильно прочитали csv, вы можете попытаться увидеть количество строк и столбцов в df, используя

len(df.columns)

или

df.columns

Для количества строк

df.count()

Если вам необходимо детально просмотреть содержимое, вы можете использовать опцию указано от cronoik .

0 голосов
/ 22 октября 2018

Это нормальное поведение.Вы можете просматривать содержимое ваших данных по-разному:

show(): отображать в формате 20 первых строк.Вы можете указать в качестве аргумента количество строк, которые вы хотите отобразить (если вы предоставите значение, которое намного выше, чем ваши данные в порядке!).Столбцы также будут усечены, как конфигурация по умолчанию.Вы можете указать truncate=False, чтобы показать все столбцы.(как правильно сказал @cronoik в своем ответе).

head(): тоже самое, что и show(), но печатает дату в формате строки.Не предоставляет хорошую отформатированную таблицу, это полезно для быстрого полного просмотра ваших данных, например, с head(1), чтобы показать только первую строку.

describe().show(): выможет показать сводку, которая дает вам представление о данных.Например, показывает количество элементов, значение min / max / avg для каждого столбца.

0 голосов
/ 22 октября 2018

Да, это нормальное поведение.Функция кадра данных show () имеет значение по умолчанию для отображения 20 строк.Вы можете установить другое значение для этого (но имейте в виду, что не имеет смысла печатать все строки вашего файла), а также остановить его усечение.Например:

df.show(100, truncate=False)
...