У меня есть один 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)?