Scala 问题在配置单元中插入数据创建小零件文件

Scala 问题在配置单元中插入数据创建小零件文件,scala,hadoop,apache-spark,hive,Scala,Hadoop,Apache Spark,Hive,我正在处理超过1000000条json文件记录我正在逐行读取文件并提取所需的键值 (json are mix结构不固定。因此我正在解析并生成Required json元素)并生成json字符串,类似于json_字符串变量和push-to-hive表数据正确存储,但hadoop apps/hive/warehouse/jsondb.myjson_表文件夹中包含小部分文件。每次插入查询都将创建新的(.1到.20 kb)零件文件。因此,如果我在hive上运行简单查询,因为它将花费30分钟以上的时间。显

我正在处理超过1000000条json文件记录我正在逐行读取文件并提取所需的键值 (json are mix结构不固定。因此我正在解析并生成Required json元素)并生成json字符串,类似于json_字符串变量和push-to-hive表数据正确存储,但hadoop apps/hive/warehouse/jsondb.myjson_表文件夹中包含小部分文件。每次插入查询都将创建新的(.1到.20 kb)零件文件。因此,如果我在hive上运行简单查询,因为它将花费30分钟以上的时间。显示我的逻辑示例代码,这将在hive中多次迭代新记录

我还尝试添加配置单元属性来合并文件,但它不起作用

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

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

您可以创建这些
json
字符串的
dataset/dataframe
,然后将其保存到配置单元表中


您可以使用配置单元ddl
ALTER TABLE\u name CONCATENATE合并现有的小文件

您可以共享读取多个json对象的代码吗?Spark不会将一行json与HDFS上的现有文件合并,如果您要使用append Mode,则需要共享有关该操作的更多详细信息。一个可能的问题可能是分区大小,但如果不查看正在执行的实际操作,就很难精确地进行注释。实际的数据推送逻辑仅此而已。我正在解析json并获取必填字段,创建json对象作为字符串,然后尝试推入配置单元表。问题在于,您只想将其附加到hadoop零件文件位置中的数据。通过代码。感谢您的快速响应。但我正在尝试使用代码,我想将kafka spark实时集成到hive表中的数据推送中。

  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");