簡體   English   中英

Groupby 現有屬性存在於 json 字符串行中 apache 光束 java

[英]Groupby existing attribute present in json string line in apache beam java

我正在從 GCS 讀取 json 文件,我必須將數據加載到不同的 BigQuery 表中。 這些文件可能具有不同時間戳的同一客戶的多條記錄。 我必須為每個客戶挑選最新的。 我計划實現如下

  1. 讀取文件
  2. 按客戶 ID 分組
  3. 應用 DoFn 比較每個組中記錄的時間戳,並且只有最新的一個
  4. 將其展平,轉換為表格行插入到 BQ。

但我無法繼續第 1 步。我看到GroupByKey.create()但無法使其使用客戶 ID 作為密鑰。

我正在使用 JAVA 實現。 任何建議都會有很大幫助。 謝謝你。

GroupByKey之前,您需要將數據集放在鍵值對中。 如果您展示了一些代碼會很好,但在不了解的情況下,您將執行以下操作:

PCollection<JsonObject> objects = p.apply(FileIO.read(....)).apply(FormatData...)

// Once we have the data in JsonObjects, we key by customer ID:
PCollection<KV<String, Iterable<JsonObject>>> groupedData = 
     objects.apply(MapElements.via(elm -> KV.of(elm.getString("customerId"), elm)))
            .apply(GroupByKey.create())

完成后,您可以檢查時間戳並按照您的想法丟棄所有最新的機器人。

請注意,您將需要設置編碼器等 - 如果您遇到困難,我們可以進行迭代。

作為提示/提示,您可以考慮Json 編碼器的這個示例

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM