saveAsTable () или InsertInto непреднамеренно разбивает записи - PullRequest
0 голосов
/ 15 октября 2019

Дело в следующем (к сожалению, я не могу показать истинные данные):

У меня есть искровой dataFrame, содержащий 1 строку 20 столбцов, которые хорошо отображаются при печати на консоль.

df.show()

#produces 1 row with 20 columns

Теперь я хочу сохранить результат в виде таблицы Hive. Это выполняется с помощью следующего кода. Я хотел сохранить как csv, но поскольку формат файла должен быть кустом, я все равно решил использовать разделитель.

df.write.mode("append").option("sep", ";").format("hive").saveAsTable('tableName')

Это дает очень странный результат, так как создается следующий файл.

5da41a8af3eaff3c864aed92;2;#500;2019-10-14 08:47:54;OPEN;Check
;\N;60;1.0;1;2019-10-14;short;1;100;C;T;T;\N;T;1.0

В то время как исходный dataFrame имел 1 строку и 20 столбцов, выходной файл имеет 2 строки! Он также читается Hive как таковой, где сам Hive будет усекаться с NULL.

Я попытался исправить это с нулевым эффектом:

  1. перераспределение на 1 раздел (исходные данные содержат больше строк, поэтому я подумал, что это даст эффект)
  2. Смена разделителя
  3. Использование InsertInto вместо saveAsTable

Есть ли у вас другие идеи? Я действительно заблудился относительно того, почему это происходит.

...