问题描述
我有来自Kafka的Json文件,我需要使用Apache Nifi将其插入到Hive表中。 Json具有多个嵌套字段或嵌套字段数组。 Hive表的架构以这样的方式定义:我们可以插入(然后查询)这些嵌套字段和嵌套数组。
我的问题是某些字段是某些消息中的数组,而它们却是其他消息中的简单Json结构:
情况1:
"some_field" : {
"nested_field" : {
"tag1" : "value","tag2" : "..."
}
}
情况2:
"some_field" : {
"nested_field" : [
{
"tag1" : "value","tag2" : "..."
},{
"tag1" : "value","tag2" : "..."
}]
}
Hive表模式只能在其中一种情况下工作,而不能同时适用于两种情况。
看到有很多类似情况2的消息,我正在考虑使用Jolt将情况1转换为情况2,而数组中只有一个元素。使用Jolt可以轻松实现:
[
{
"operation": "shift","spec": {
"some_field": {
"nested_field": {
"*": "some_field.nested_field[0].&"
}
}
}
]
但是随后它弄乱了数组形式的消息。
是否有某种方法可以处理情况1而又不弄乱情况2?
或者,是否可以过滤掉与给定模式不匹配的流文件? (我知道我可以使用Jolt筛选出与架构不匹配的字段,但这并不理想)
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)