目前我正在开发Spark版本2.1.0,作为我的数据摄取工作的一部分,我必须使用ingest方法将数据摄取到hive表中。但是Spark 2.1版本有一个bug,当插入数据到hive表中时,insertinto方法不会保持列顺序。
我已经尝试在append模式下使用saveAsTable方法,但它不会起作用,因为在数据摄取之前,我首先使用正确的数据类型手动创建表。
我尝试从现有的hive表中创建spark数据帧,并尝试从其中获取列序列,并传递此列表结果以确保列序列,但每次都在hive表的顶部创建数据帧以获取列序列。每次加载hive表来创建数据帧都会占用内存吗?
有没有人知道,如何用更好的方法在数据注入hive表的过程中保持列顺序?
发布于 2019-02-27 00:01:52
您可以尝试首先获取hive表的列,然后将它们应用于spark数据帧:
target_table = sqlContext.table("my_target_table")
my_df.select(*target_table.columns).saveAsTable("my_target_table")
https://stackoverflow.com/questions/54889309
复制相似问题