0

以下の構造の 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. 上記の構造からハイブ スキーマを作成する必要があります。

  2. JSON 構造は動的に変更できます。JSON 構造の変更ごとに。ハイブ スキーマを再生成する必要があります。

  3. PythonのJSONライブラリを使ってみました。しかし、あまり役に立ちません。ハイブスキーマのフィールド名として使用できるタグ名を取得できませんでした。

  4. JSON を Hive スキーマに生成するプロセスを自動化したい。

  5. Python JSON Encoder、Decoder クラスの探索。JSON を解析し、そこから Hive スキーマを作成するための独自のロジックを配置します。しかし、JSON Encoder、Decoder クラスを使用できる良い例はありません。

  6. 最後に、すべてを Python UDF の形式にします。私は Java UDF の代替手段にも適しています。

注: 上記の JSON は、http://jsonlint.com/を使用して構造化できます。

4

0 に答える 0