【发布时间】:2017-05-22 01:17:10
【问题描述】:
我正在尝试在 NiFi 中创建一个流,该流采用有效的 json 文件并使用 PutHiveStreaming 处理器将其直接放入配置单元表中。我的 json 如下所示:
{
"Raw_Json": {
"SystemInfo": {
"Id": "a string ID",
"TM": null,
"CountID": "a string ID",
"Topic": null,
"AccountID": "some number",
"StationID": "some number",
"STime": "some Timestamp",
"ETime": "some Timestamp"
},
"Profile": {
"ID": "ID number",
"ProductID": "Some Number",
"City": "City Name",
"State": "State Name",
"Number": "XXX-XXX-XXXX",
"ExtNumber": null,
"Unit": null,
"Name": "Person Name",
"Service": "Purchase",
"AddrID": "00000000",
"Products": {
"Product": [{
"Code": "CODE",
"Description": "some description"
},
{
"Code": "CODE",
"Description": "some description"
},
{
"Code": "CODE",
"Description": "some description"
},
{
"Code": "CODE",
"Description": "some description"
},
{
"Code": "CODE",
"Description": "some description"
},
{
"Code": "CODE",
"Description": "some description"
},
{
"Code": "CODE",
"Description": "some description"
},
{
"Code": "CODE",
"Description": "some description"
},
{
"Code": "CODE",
"Description": "some description"
},
{
"Code": "CODE",
"Description": "some description"
}]
}
},
"Total": {
"Amount": "some amount",
"Delivery": "some address",
"Estimate": "some amount",
"Tax": null,
"Delivery_Type": null
}
},
"partition_date":"2017-05-19"
}
我正在使用 InferAvroSchema 处理器获取 json,然后使用推断的 avro 模式将 json 转换为 avro 格式并将其发送到 PutHiveStreaming 处理器。我的流程看起来像这样:
主要目标是我希望将所有“Raw_Json”列转储到 hive 表中的一列中,并且该表将由“partition_date”列进行分区,该列将是表的第二列。问题是,由于某种原因,NiFi 在从“Raw_Json”列推断嵌套 json 时遇到问题,并将其像 Null 一样倾倒在桌子上,如下所示:
有谁知道如何让 NiFi 将“Raw_Json”列的整个嵌套 Json 作为一列读取并将其发送到 hive 表?我如何创建自己的 avro 架构来做到这一点?任何有关如何解决此问题的见解或想法将不胜感激!
【问题讨论】:
标签: json avro apache-nifi