使用spark将数据插入到hive表中

问题描述 投票:0回答:1

目前我正在使用Spark版本2.1.0,作为我的数据提取工作的一部分,我必须使用insertinto方法将数据提取到hive表中。但是Spark 2.1版本存在bug,insertinto方法在将数据插入hive表时不会保持列序列。

我已经尝试使用带有附加模式的saveAsTable方法,但是它不起作用,因为我在数据摄取之前首先使用正确的数据类型手动创建表。

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

有没有人有想法,如何用更好的方法在数据摄取到hive表中时保持列序列?

apache-spark hive pyspark apache-spark-sql
1个回答
0
投票

您可以尝试首先获取配置单元表的列,然后将它们应用于您的spark数据帧:

target_table = sqlContext.table("my_target_table")
my_df.select(*target_table.columns).saveAsTable("my_target_table")
© www.soinside.com 2019 - 2024. All rights reserved.