pyspark загрузить CSV-файл в dataframe, используя схему - PullRequest
0 голосов
/ 08 сентября 2018

Я новичок в pyspark и работаю над pyspark с Spark версии 2.2.0 и Python версии 2.7.12

Я пытаюсь прочитать 2 файла .csv (имеет более 1 строки заголовка) в 2 разных фреймах данных с известной схемой и выполнить операции сравнения.

Я не уверен, существует ли какой-либо оптимальный / лучший метод для создания файла схемы (включает имя столбца, тип данных, обнуляемость) и передачи его в программу pyspark для загрузки в информационный кадр.

Я кодировал следующее для первого файла:

  1. Создание файла yaml для хранения путей к файлам и схемы

  2. Чтение файла схемы и динамическое построение StructField (имя столбца, тип данных, нулевое значение) в цикле. Пример: [StructField (column1, Integer, true), StructField (column2, string, true), StructField (column3, десятичный (10,2), true), ....]

  3. Считать файл данных в RDD и удалить 2 строки заголовка (будет использовать функцию вычитания)

  4. Создание фрейма данных с использованием sqlContext.createDataFrame с передачей RDD, структуры схемы.

Я могу выполнить эти шаги для выборки данных первого файла.

Пожалуйста, предложите, если есть какой-либо лучший способ (я еще не изучил вариант fromDDL для StructType). После создания аналогичного кадра данных для второго файла необходимо применить функциональную логику.

Спасибо

Ответы [ 2 ]

0 голосов
/ 12 сентября 2018

Я могу сделать это с помощью файла конфигурации yaml (схема хранилища) и чтения из pyspark для динамического создания StructType.

Он работает и отвечает требованиям.если есть какие-то лучшие методы, рад слышать.

0 голосов
/ 09 сентября 2018

Как насчет чтения в файле с использованием pyspark spark.read.csv со stucttype для схемы, параметрами header = true и mode = DROPMALFORMED, которые будут игнорировать любые записи, которые не соответствуют схеме.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...