我有一个具有以下结构的 JSON 文件:
{
"A": {
"AId": {
"AId": "123",
"idType": "XYZ"
},
"fN": "RfN",
"oN": "ON",
"mail": [
"abc@kml.com",
"xyz@kml.com"
],
"ph": [
{
"nu": "999-999-9999",
"t": "Of",
"ext": "1234"
},
{
"nu": "999-999-9999",
"t": "Of",
"ext": "1234"
}
],
"add": {
"addLines": [
"Addr Line 1",
"Addr Line 2"
],
"c": "C",
"sC": "S"
},
"c": [
{
"cT": "CT",
"cN": "9999"
}
],
"serId": "XXX"
},
"int": {
"endTS": null,
"cId": {
"cId": "null",
"cC": "null"
},
"cmpgn": null,
"sTC": null,
"cCID": {
"tIC": "null",
"tC": "null",
"cC": []
},
"int": "Un",
"rep": [],
"pp": "null",
"cf": {
"a": 1234,
"b": 1234
},
"iA": {
"sId": {
"s": "null",
"sId": "null"
},
"cId": "null",
"lId": "null"
},
"sRequest": null,
"vBu": "VBU",
"fId": "FId",
"k": [
"k"
],
"eng": [
{
"EC": "E_CODE::12345",
"cT": "2011-01-28T23:12:12.666Z",
"up": null,
"rep": {
"rep": {
"type": "B",
"id": "ID"
},
"fullName": "FullName"
}
}
]
}
}
几点:
从上面的结构中需要创建hive schema。
JSON 结构可以动态变化。对于 JSON 结构的每次更改。需要重新生成配置单元模式。
我试过了,使用 Python 的 JSON 库;但没有多大用处。我无法获得标签名称,它可以用作配置单元模式的字段名称。
想要将生成 JSON 的过程自动匹配到 Hive 模式。
探索Python JSON Encoder、Decoder类;解析 JSON 并放入自己的逻辑来创建 Hive 模式。但是没有很好的例子可以使用 JSON Encoder, Decoder 类。
最后,想把所有东西都放在 Python UDF 的形式中。我也喜欢任何 Java UDF 替代品。
注意:上面的 JSON 可以使用http://jsonlint.com/构建