как записать вывод pyspark в таблицу импала?

Я использую pyspark для постановки задачи, здесь я предполагаю объединить свои результаты и передать их в качестве входных данных для другой моей модели. Но в hdfs мой вывод разбивается на части, и поэтому их сложно объединить.

Итак, я хотел сохранить выходные результаты напрямую в таблице импала, как я могу это сделать?


person pylearner    schedule 22.03.2018    source источник
comment
Что не так с saveAsTable? Или с помощью SparkSQL для запуска INSERT INTO существующей таблицы? Кроме того, HDFS может читать весь каталог для ввода, поэтому неясно, запрашиваете ли вы один файл или нет.   -  person OneCricketeer    schedule 22.03.2018


Ответы (1)


Чтобы представить содержимое файлов, хранящихся в HDFS, в виде таблицы, вы можете определить внешнюю таблицу:

CREATE EXTERNAL TABLE table_name
( column_1 string
, ... )

ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
STORED AS TEXTFILE

LOCATION '/some/path/in/hdfs/';

Поддерживаются различные форматы файлов. Пример для плоских файлов с табуляцией в качестве разделителя столбцов.

Если вы хотите изменить количество файлов, создаваемых Spark, вы можете изменить количество разделов RDD с помощью rdd.coalesce перед его сохранением.

person Marek Grzenkowicz    schedule 22.03.2018
comment
У меня есть большой вывод, который нужно сохранить, если он будет сохранен на одном узле, тогда я столкнусь с проблемами памяти - person pylearner; 22.03.2018
comment
Нет необходимости пытаться сохранить вывод в один файл, но coalesce все еще может уменьшить количество файлов с 1000 до, скажем, 20. Но вам не нужно этого делать - внешняя таблица покажет данные со всех файлы в его расположении. - person Marek Grzenkowicz; 22.03.2018