У меня есть небольшой скрипт на python, который выбирает столбцы из существующей таблицы и сохраняет в dataFrame, а затем записывает в разделенную таблицу (table2), проблема, с которой я сталкиваюсь, заключается в том, что, несмотря на столбец раздела tran_date присутствует в конце SQL с правильными значениями, он вставляется в таблицу разделов как HIVE_DEFAULT_PARTITION
Я создал table2 с разделами
PARTITIONED BY ( `tran_date` varchar(10) )
Вот мой код:
from pyspark.context import SparkContext
from pyspark.sql import HiveContext
sqlContext = HiveContext(sc)
sqlContext.setConf("hive.exec.dynamic.partition", "true")
sqlContext.setConf("hive.exec.dynamic.partition.mode", "nonstrict")
df = sqlContext.sql(""" select A , B , tran_date from table1 """)
df.write.mode("append").partitionBy('tran_date').saveAsTable("table2");
когда я проверяю значения df.select ("tran_date"), он показывает реальные значения
когда я проверяю значения в table2, это все по умолчанию, за исключением того, что одна строка имеет метку времени эпохи
+-------------+--+
| tran_date |
+-------------+--+
| 1534809837 |
| __HIVE_DEF |
+-------------+--+
Почему tran_date по умолчанию это делает? где датафрейм имеет значения ...