问题在hive中插入数据创建小部分文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了问题在hive中插入数据创建小部分文件相关的知识,希望对你有一定的参考价值。

我正在处理超过1000000条记录的json文件我正在逐行读取文件并提取所需的键值(json是混合结构不能修复。所以我正在解析并生成需要的json元素)并生成json字符串simillar到json_string变量和push to hive table数据存储正确,但在hadoop apps / hive / warehouse / jsondb.myjson_table文件夹中包含小部分文件。每个插入查询将创建新的(.1到.20 kb)零件文件。如果我在蜂巢上运行简单查询,因为它需要超过30分钟。显示我的逻辑的示例代码,这会在hive.enter image description here中将新记录的倍数乘以inesrt


  import org.apache.spark.sql.SparkSession

val spark = SparkSession.builder().appName("SparkSessionZipsExample").enableHiveSupport().getOrCreate()

var json_string = """{"name":"yogesh_wagh","education":"phd" }"""

val df = spark.read.json(Seq(json_string).toDS)

//df.write.format("orc").saveAsTable("bds_data1.newversion");

df.write.mode("append").format("orc").insertInto("bds_data1.newversion");

我也尝试添加hive属性来合并文件,但它不会工作,

我也尝试从现有表创建表,将小部分文件合并到一个256 MB文件中。请分享示例代码以插入多个记录并在部分文件中追加记录。

答案

我认为每个插件都会创建一个新的零件文件。

您可以创建这些dataset/dataframe字符串的json,然后将其保存到hive表。

你可以使用hive ddl ALTER TABLE table_name CONCATENATE;合并现有的小文件

以上是关于问题在hive中插入数据创建小部分文件的主要内容,如果未能解决你的问题,请参考以下文章

Hive如何处理大量小文件

如何合并 sparksql 保存在 hive 上的小文件?

Hive之小文件问题及其解决方案

如何将 CSV 文件中的数据插入 Hive?

Hive优化之小文件问题及其解决方案

用于插入数据的 Hive 循环