使用flatMap进行Pivot Kafka KTable结果

时间:2017-11-14 16:01:24

标签: apache-kafka apache-kafka-streams

我有两个JSON文档如下:

[
  {
    "ProductID": 12,
    "ProductName": "Product 1",
    "CountryID": 55,
    "CountryName": "Country 1",
    "Companies": [{
        "CompanyID": 1,
        "CompanyName": "Company 1"
      }, {
        "CompanyID": 2,
        "CompanyName": "Company 2"
      }
    ]
  },
  {
    "ProductID": 13,
    "ProductName": "Product 2",
    "CountryID": 55,
    "CountryName": "Country 1",
    "Companies": [{
        "CompanyID": 1,
        "CompanyName": "Company 1"
      }, {
        "CompanyID": 2,
        "CompanyName": "Company 2"
      }
    ]
  }
]

这应该是KTable,而不是KStream,因为有些记录会被删除。

键是(ProductID, CountryID)

我想转移这些数据,并以这种方式将(CompanyID)作为键与数组中的每个(ProductID, CountryID)组合一起使用:

[
  {
    "CompanyID": 1,
    "CompanyName": "Company 1",
    "ProductsCountries": [{
        "ProductID": 12,
        "CountryID": 55
      }, {
        "ProductID": 13,
        "CountryID": 55
      }
    ]
  },
  {
    "CompanyID": 2,
    "CompanyName": "Company 2",
    "ProductsCountries": [{
        "ProductID": 12,
        "CountryID": 55
      }, {
        "ProductID": 13,
        "CountryID": 55
      }
    ]
  }
]

只要我的KTable中的(ProductID, CountryID)组合消失,我就想将其从(CompanyID)所拥有的数组中删除。

使用KStream似乎是半可能的,因为我可以将它平面映射并在我的文档中添加新的(ProductID, CountryID)组合,但是我无法捕获删除。

有没有办法用KTable做到这一点?

0 个答案:

没有答案