Записывайте файлы в папку hdfs таблицы Hive и делайте их доступными для запроса из Hive. - PullRequest
0 голосов
/ 06 июня 2018

Я использую Spark 2.2.1, у которого есть полезная опция, чтобы указать, сколько записей я хочу сохранить в каждом разделе файла;эта функция позволяет избежать передела перед записью файла.Однако, кажется, что эта опция может использоваться только с интерфейсом FileWriter, а не с DataFrameWriter: таким образом, опция игнорируется

df.write.mode("overwrite")
  .option("maxRecordsPerFile", 10000)
 .insertInto(hive_table)

, тогда как при этом она работает

df.write.option("maxRecordsPerFile", 10000)
  .mode("overwrite").orc(path_hive_table)

поэтому я непосредственно пишу файлы orc в папку HiveMetastore указанной таблицы.Проблема состоит в том, что если я запрашиваю таблицу Hive после вставки, эти данные не распознаются Hive.Знаете ли вы, есть ли возможность напрямую записывать файлы разделов в метасторое куста и делать их доступными также через таблицу Hive?

Ответы [ 2 ]

0 голосов
/ 12 июня 2018

Кроме того, я также обнаружил, что команда «MSCK REPAIR TABLE» автоматически обнаруживает новые разделы в папке таблицы кустов

0 голосов
/ 06 июня 2018

Шаги отладки:

1.Проверьте тип файла, который использует ваша таблица улья

Show create table table_name

и установите флажок «STORED AS». Для повышения эффективности сохраняются выходные данные в паркете и в расположении разделов (вы можете увидеть это в разделе «LOCATION» выше).запрос) ..Если есть другие конкретные типы, создайте файл с таким типом.

2.Если вы сохраняете данные в любом разделе и вручную создаете папку раздела, избегайте этого. Создайте раздел, используя

alter table {table_name} add partition ({partition_column}={value});

3. После создания выходных файлов в spark. Вы можете перезагрузить их и проверить на наличие "_corrupt_record "(вы можете распечатать фрейм данных и проверить это)

...