gpt4 book ai didi

scala - 使用 Spark Scala 将数据插入到带有 HiveContext 的 Hive 表中

转载 作者:可可西里 更新时间:2023-11-01 14:36:44 30 4
gpt4 key购买 nike

我能够使用 HiveContext 将数据从我的 spark 代码插入到 Hive 表中,如下所示

   val sqlContext = new org.apache.spark.sql.hive.HiveContext(sc)
sqlContext.sql("CREATE TABLE IF NOT EXISTS e360_models.employee(id INT, name STRING, age INT) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n'")

sqlContext.sql("insert into table e360_models.employee select t.* from (select 1210, 'rahul', 55) t")
sqlContext.sql("insert into table e360_models.employee select t.* from (select 1211, 'sriram pv', 35) t")
sqlContext.sql("insert into table e360_models.employee select t.* from (select 1212, 'gowri', 59) t")

val result = sqlContext.sql("FROM e360_models.employee SELECT id, name, age")
result.show()

但是,这种方法是在仓库中为每次插入创建一个单独的文件,如下所示

part-00000
part-00000_copy_1
part-00000_copy_2
part-00000_copy_3

有什么方法可以避免这种情况,只需将新数据附加到单个文件中,或者有其他更好的方法将数据从 spark 插入到 hive 中吗?

最佳答案

不,没有办法做到这一点。每个新插入都会创建一个新文件。这不是 Spark 的“问题”,而是您在使用 Hive 时也会遇到的一般行为。唯一的方法是使用所有数据的 UNION 执行单个插入,但如果您需要执行多个插入,您将拥有多个文件。

您唯一可以做的就是在配置单元中启用文件合并(在这里查看:Hive Create Multi small files for each insert in HDFShttps://cwiki.apache.org/confluence/display/Hive/Configuration+Properties)。

关于scala - 使用 Spark Scala 将数据插入到带有 HiveContext 的 Hive 表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37594958/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com