我有一个示例应用程序正在从csv文件读取数据帧 . 可以使用方法 df.saveAsTable(tablename,mode)
将数据帧以镶木地板格式存储到Hive表中 .
上面的代码工作正常,但我每天都有如此多的数据,我想根据creationdate(表中的列)动态分区hive表 .
有没有办法动态分区数据帧并将其存储到配置单元仓库 . 想要避免使用 hivesqlcontext.sql(insert into table partittioin by(date)....)
对insert语句进行硬编码 .
问题可视为以下内容的延伸:How to save DataFrame directly to Hive?
任何帮助深表感谢 .
5 回答
我相信它的工作原理如下:
df
是包含年,月和其他列的数据框要么
我能够使用
df.write().mode(SaveMode.Append).partitionBy("colname").saveAsTable("Table")
写入分区的配置单元表我必须启用以下属性才能使其正常工作 .
我也面对同样的事情,但使用了我解决的以下技巧 .
当我们将任何表分区为分区时,分区列将区分大小写 .
分区列应存在于具有相同名称的DataFrame中(区分大小写) . 码:
这对我有用 . 我设置了这些设置,然后将数据放入分区表中 .
这对我来说使用python和spark 2.1.0 .
不确定这是否是最好的方法,但它的工作原理......