使用UDF动态(更改)JSON到Hive Schema

时间:2015-02-05 19:03:03

标签: python hive-udf

我有一个结构如下的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"
                }
            }
        ]
    }
}

几点:

  1. 从上面的结构需要创建hive架构。

  2. JSON结构可以动态更改。对于JSON结构中的每个更改。需要重新生成配置模式。

  3. 我试过,使用Python的JSON库;但没有多大用处。我无法获取标记名称,可以将其用作hive模式的字段名称。

  4. 想要自动配合生成JSON到Hive架构的过程。

  5. 探索Python JSON编码器,解码器类;解析JSON并使用自己的逻辑从中创建Hive模式。但是没有好的例子可以使用JSON Encoder,Decoder类。

  6. 最后,想要以Python UDF的形式放置所有内容。我也很喜欢任何Java UDF替代方案。

  7. 注意:上述JSON可以使用http://jsonlint.com/

    进行结构化

0 个答案:

没有答案