【问题标题】:Issue inserting data into hive table using spark使用 spark 将数据插入 hive 表的问题
【发布时间】:2019-07-20 05:18:04
【问题描述】:

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

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

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

有人知道,如何在数据摄取到配置单元表期间以更好的方法维护列顺序?

【问题讨论】:

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


    【解决方案1】:

    您可以尝试先获取 hive 表的列,然后将它们应用到您的 spark 数据框:

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

    【讨论】:

    • 感谢回答,我也尝试过这个解决方案,但我担心的是数据不断堆积,每次在目标表上创建数据帧都会造成内存开销,如果我错了,请纠正我?
    • @AjayKharade 我相信这是另一个问题,我不确定是否理解。请编辑您的实际帖子或开始另一个帖子以讨论另一个主题。
    • 用与您提到的相同的方法编辑了我的问题,如果我们能够找到更好的方法,我们将不胜感激。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-04
    • 1970-01-01
    • 2019-12-27
    • 2017-05-06
    • 1970-01-01
    • 2019-12-09
    • 1970-01-01
    相关资源
    最近更新 更多