我正在处理超过1000000条json文件的记录我正在逐行读取文件并提取所需的密钥值 (json是混合结构不修复。所以我解析并生成需要的json元素)并生成json字符串simillar到json_string变量并推送到hive表数据存储正确但是在hadoop apps / hive / warehouse / jsondb.myjson_table文件夹中包含小部分文件。每个插入查询将创建新的(.1到.20 kb)零件文件。如果我在蜂巢上运行简单查询,因为它需要超过30分钟。显示我的逻辑的示例代码,这会将新记录的倍数乘以hivert中的records。
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的文件中。 请分享示例代码以插入多个记录并在部分文件中附加记录。
答案 0 :(得分:0)
我认为每个插件都会创建一个新的零件文件。
您可以创建这些dataset/dataframe
字符串的json
,然后将其保存到配置单元表。
您可以使用hive ddl ALTER TABLE table_name CONCATENATE;