使用Spark将数据插入到Hive表中

时间:2019-02-26 15:48:39

标签: apache-spark hive pyspark apache-spark-sql

当前,我正在使用Spark版本2.1.0,作为数据提取作业的一部分,我必须使用insertinto方法将数据提取到配置单元表中。但是Spark 2.1版本存在一个错误,在将数据插入到蜂巢表中时,insertinto方法不会保持列顺序。

我已经尝试过将saveAsTable方法与附加模式一起使用,但是由于我要先使用正确的数据类型手动创建表,然后再提取数据,因此无法使用

我试图从现有的配置单元表创建spark数据帧,并尝试从中获取列序列,并传递此列表结果以确保列序列,但是每次在配置单元表顶部创建数据帧以获取列序列时。每次加载配置单元表以创建数据帧时,都会占用内存吗?

有人知道,如何通过更好的方法将数据摄取到配置单元表中以保持列顺序?

1 个答案:

答案 0 :(得分:0)

您可能首先尝试获取配置单元表的列,然后将其应用于spark数据框:

target_table = sqlContext.table("my_target_table")
my_df.select(*target_table.columns).saveAsTable("my_target_table")