JSON-сообщение в Hive (желательно с помощью spark / scala с использованием dataframe) - PullRequest
0 голосов
/ 21 ноября 2018

У меня есть один JSON-файл (sample_json789.json), который содержит заголовок и информацию о данных.Мне нужно сохранить это сообщение JSON в таблице Hive (желательно с использованием Spark / Scala).Поскольку это вложенное сообщение JSON, проблема возникает, когда мы хотим сохранить часть сообщения JSON в столбце.

JSON-сообщение :

{
"Header": {
    "Field1": "field1",
    "Field2": "field2",
    "Field3": "field3",
    "Field4": "field4",
}

}

{
"Data": {
    "dataField": "dataField1",
    "dataDescription": "This is data 1",
    "codes": {
        "code": "XYZ123",
        "codeDescription": "LAST 3 OF 26"
    },
    "otherCodes":[{
        "key":"ABC123",
        "KeyDescription":"descriptionofABC"
    },
    {
        "key":"DEF123",
        "keyDescription":"DescriptionforDEF"
    }
    ]"
}

}

{
"Data": {
    "codeCategory": "dataField1",
    "fieldName": "This is data 1",
    "codes": {
        "code": "XYZ456",
        "codeDescription": "LAST 3 OF 26"
    },
    "otherCodes":[{
        "key":"ABC456",
        "KeyDescription":"descriptionofABC"
    },
    {
        "key":"DEF456",
        "keyDescription":"DescriptionforDEF"
    }
    ]"
}

}

Первая часть сообщения JSON содержит информацию заголовка, которую необходимо сохранить в таблице: HeaderTable

HeaderTable

Field1 | Field2 | Field3 | Field4
----------------------------------
field1 | field2 | field3 | field4

Другая часть (Данные) сообщения JSON состоит из нескольких данных, которые необходимо сохранить в таблице: DataTable.Однако проблема в этой таблице заключается в том, что часть сообщения JSON также должна храниться в столбце.

DataTable (EXPECTED OUTPUT)

jsonFileName       | code   |    jsonMsg
-------------------------------------------------------------------------
sample_json789.json | XYZ123 | { "Data": { "dataField": "dataField1",....
sample_json789.json | XYZ456 | { "Data": { "dataField": "dataField2",....

Я сталкиваюсь с трудностями при сохранении DataTable в Hive из-за jsonMsg.Выше приведен пример сообщения, но фактическое сообщение довольно большое.Ниже приведены шаги (Spark / scala):

1. val jsonFile = sc.textFile(<json file path>)
2. val hiveContext = new org.apache.spark.sql.hive.HiveContext(sc)
3. val jsonDF = hiveContext.read.json(jsonFile)
4. jsonDF.saveAsTable("testTable")

Ошибка : поле jsonMessage превышает предел 2000 (больше 3000)

Также отображается поле jsonMsgв WrappedArray.Как сохранить jsonMessage в таблице улья (предпочтительно Spark / scala)?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...