大家好, 我从NiFi的Kafka主题获取消息流,该消息流是通过消费者流程读取的。消息采用json格式(虚拟json值,json格式与原始格式相同):
{ "schema": {
"type": "struct",
"name": "emp_table",
"fields": [
{
"field": "emp_id",
"type": "string"
},
{
"field": "emp_name",
"type": "String"
},
{
"field": "city",
"type": "string"
},
{
"field": "emp_sal",
"type": "string"
},
{
"field": "manager_name",
"type": "string"
}
] }, "payload": {
"emp_id": "1",
"emp_name": "abc",
"city": "NYK",
"emp_sal": "100000",
"manager_name": "xyz" } }
如您所见,实际的表名在Schema下,列值在有效负载下。通过使用NiFi中的EvaluateJsonPath和PutHBaseJson处理器,我可以解析列值并将其放入Hbase表中。
我能实现的是手动输入表名和行ID。但是我的问题是我想从json中获取表名(在上面的示例emp_table中)和一个rowid(在上面的示例emp_id中),并在运行时将这些值与列值一起提供给NiFi中的PutHbaseJson处理器。
答案 0 :(得分:0)
您应该能够将另一个JSON路径表达式添加到EvaluateJsonPath中,如下所示:
table = $.schema.name
然后在PutHBaseJson中将表名设为$ {table},或者将其命名为EvaluateJsonPath。