gpt4 book ai didi

json - 使用Spark(Java)将JSON插入Hadoop

转载 作者:行者123 更新时间:2023-12-02 20:36:33 25 4
gpt4 key购买 nike

我是Hadoop的新手,

我在Java中使用Spark。

我有动态JSON,例如:

   {
"sourceCode":"1234",
"uuid":"df123-....",
"title":"my title"
}{
"myMetaDataEvent": {
"date":"10/10/2010",
},
"myDataEvent": {
"field1": {
"field1Format":"fieldFormat",
"type":"Text",
"value":"field text"
}
}
}

有时我只能看到field1,有时我只能看到field1 ... field50

也许用户可以从此JSON添加字段/删除字段。

我想将此动态JSON从Spark Java代码插入到hadoop(到配置单元表)中,

我该怎么做?

我希望用户可以在进行HIVE查询后即 select * from MyTable where type="Text
我每天大约需要插入100B条JSON记录,并将它们插入Hadoop,

那么推荐的方法是什么呢?

*我查看了以下内容: SO Question,但这是已知的JSON方案,而不是我的情况。

谢谢

最佳答案

我遇到了类似的问题,因此可以解决此问题。 (因此,如果您在解析json之前创建架构,这可能会有所帮助)。

对于具有字符串数据类型的字段,您可以创建架构:-

StructField field = DataTypes.createStructField(<name of the field>, DataTypes.StringType, true);

对于具有int数据类型的字段,您可以创建架构:-
StructField field = DataTypes.createStructField(<name of the field>, DataTypes.IntegerType, true);

List<StructField>中添加所有字段之后,

例如:-
List<StructField> innerField = new ArrayList<StructField>();
.... Field adding logic ....
Eg:-
innerField.add(field1);
innerField.add(field2);

//可以有一个实例,或者值的多个实例进入数组,然后需要将其放入“数组类型”。
ArrayType getArrayInnerType = DataTypes.createArrayType(DataTypes.createStructType(innerField));

StructField getArrayField = DataTypes.createStructField(<name of field>, getArrayInnerType,true);

然后,您可以创建架构:-
StructType structuredSchema = DataTypes.createStructType(getArrayField);

然后,我使用使用数据集API生成的架构读取json。
Dataset<Row> dataRead = sqlContext.read().schema(structuredSchema).json(fileName);

关于json - 使用Spark(Java)将JSON插入Hadoop,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50964875/

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