2

我是 Apache Nifi 的新手

我们创建 Nifi 流,它使用来自 kafka 的 json 数据,结果在丰富后被发送到另一个 kafka 主题。但是 HBase 查找不返回键的值。相反,它返回键、值对,如 MapRecord[{SERIAL_NUM=123456789}]. 但我只需要'123456789'的值。

我无法解决这个问题。有人可以帮我解决这个话题吗?

我正在分享我的流程的输出。我们希望看到“hbase_integid”的值为“123456789”,但查找服务返回

MapRecord[{SERIAL_NUM=123456789}]"

我们如何仅提取 SERIAL_NUM 值(“ 123456789 ”)的值?

[
  {
    "table" : SIEBEL.S_ASSET,
    "op" : Update,
    "hbase_integid" : **MapRecord[{SERIAL_NUM=123456789}]**,
    "op_type" : U,
    "op_ts" : 2018-04-02 05:48:35.055299,
    "current_ts" : 2018-04-02T08:48:40.071000,
    "pos" : 00000000020530642196,
    "before" : {
        "ROW_ID" : 1-G7B7EGF,
        "BILLACCT_ID" : ,
        "BILL_ACCNT_ID" : 1-G79GNWP,
        "BILL_PROFILE_ID" : 1-1FJHFB0,
        "INTEGRATION_ID" : 1-G79GU5K,
        "NAME" : ,
        "OWNER_ACCNT_ID" : 1-G79GEVV,
        "OWNER_CON_ID" : 1-G79GEW3,
        "PROD_ID" : 1-Q5B470,
        "PROMOTION_ID" : ,
        "PROM_INTEG_ID" : ,
        "PROM_ITEM_ID" : ,
        "PR_ACCNT_ID" : ,
        "PR_CON_ID" : No Match Row Id,
        "ROOT_ASSET_ID" : 1-G7B7EFI,
        "SERIAL_NUM" : ,
        "X_VF_MSISDN" : ,
        "X_VF_PERMISSONS" : 
    },
    "after" : {
        "ROW_ID" : 1-G7B7EGF,
        "BILLACCT_ID" : ,
        "BILL_ACCNT_ID" : ,
        "BILL_PROFILE_ID" : ,
        "INTEGRATION_ID" : ,
        "NAME" : ,
        "OWNER_ACCNT_ID" : ,
        "OWNER_CON_ID" : ,
        "PROD_ID" : ,
        "PROMOTION_ID" : ,
        "PROM_INTEG_ID" : ,
        "PROM_ITEM_ID" : ,
        "PR_ACCNT_ID" : ,
        "PR_CON_ID" : ,
        "ROOT_ASSET_ID" : ,
        "SERIAL_NUM" : ,
        "X_VF_MSISDN" : ,
        "X_VF_PERMISSONS" : 
    }
  }
]
4

2 回答 2

0

如果您使用的是 LookupRecord 处理器,那么文档会有些误导。如屏幕截图所示设置您的处理器。确保设置了以下两个属性:

  1. 记录结果内容必须设置为“插入记录字段”
  2. 记录更新策略应设置为“使用属性”
  3. 最后 Result Recordpath 必须设置为/而不是hbase_integid(这似乎是文档中的一个错误)

希望有帮助!

在此处输入图像描述

于 2020-05-06T00:22:50.217 回答
0

查找记录作为 MapRecord 提供输出;您可能需要随后使用其他处理器来提取 SERIAL_NUMBER 的值。

下面给出了一个工作示例。

在此处输入图像描述

HBase 查找配置

在此处输入图像描述

获得查找结果后,您可以使用 2 个 UpdateRecord 处理器来提取和更新流文件中 SERIAL_NUM 的值。

更新记录 1 配置

在此处输入图像描述

更新记录 2 配置

在此处输入图像描述

于 2020-07-15T21:05:10.787 回答