Дело в следующем (к сожалению, я не могу показать истинные данные):
У меня есть искровой 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 раздел (исходные данные содержат больше строк, поэтому я подумал, что это даст эффект)
- Смена разделителя
- Использование InsertInto вместо saveAsTable
Есть ли у вас другие идеи? Я действительно заблудился относительно того, почему это происходит.