将来自NiFi流的传入Json消息解析为Hbase表

时间:2018-12-29 21:12:47

标签: json parsing hbase apache-nifi

大家好, 我从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处理器。

enter image description here

1 个答案:

答案 0 :(得分:0)

您应该能够将另一个JSON路径表达式添加到EvaluateJsonPath中,如下所示:

table = $.schema.name

然后在PutHBaseJson中将表名设为$ {table},或者将其命名为EvaluateJsonPath。