![](/img/trans.png)
[英]How to de-identify BigQuery data that stored in RECORD or REPEATED properties?
[英]BigQuery Streaming Insert Error - Repeated record added outside of an array
我在使用 Dataflow Streaming Insert 時遇到了一個奇怪的問題。 我有一個包含大量記錄和數組的 JSON。 我使用流式插入方法和類 DeadLetters 設置了管道來處理錯誤。
formattedWaiting.apply("Insert Bigquery ",
BigQueryIO.<KV<TableRow,String>>write()
.to(customOptions.getOutputTable())
.withFormatFunction(kv -> kv.getKey())
.withMethod(BigQueryIO.Write.Method.STREAMING_INSERTS)
.withSchemaFromView(schema)
.withCreateDisposition(CreateDisposition.CREATE_IF_NEEDED)
.withWriteDisposition(WriteDisposition.WRITE_APPEND)
.withFailedInsertRetryPolicy(InsertRetryPolicy.retryTransientErrors())
.withoutValidation()
.withExtendedErrorInfo()
.withTimePartitioning(new TimePartitioning().setField(customOptions.getPartitionField().get()))
.withClustering(clusteringFieldsList)
.withExtendedErrorInfo())
.getFailedInsertsWithErr()
.apply("Taking 1 element insertion", Sample.<BigQueryInsertError>any(1))
.apply("Insertion errors",ParDo.of(new DeadLettersHandler()));
問題是當我使用流式插入方法時,有些行沒有插入到表中,我收到了錯誤:
在數組外添加名稱為 XXXX 的重復記錄。
我仔細檢查了有問題的 JSON,一切似乎都很好。 奇怪的部分是當我評論withMethod行時,行插入完全沒有問題。
我不知道為什么管道有這種行為。
JSON 看起來像這樣。
{
"parameters":{
"parameter":[
{
"subParameter":[
{
"value":"T",
"key":"C"
},
{
"value":"1",
"key":"SEQUENCE_NUMBER"
},
{
"value":"1",
"key":"SEQUENCE_NUMBER"
}
],
"value":"C",
"key":"C"
},
{
"subParameter":[
{
"value":"T",
"key":"C"
},
{
"value":"1",
"key":"SEQUENCE_NUMBER"
},
{
"value":"2",
"key":"SEQUENCE_NUMBER"
}
],
"value":"C",
"key":"C"
}
]
}
}
BigQuery 架構很好,因為我可以在評論 BigQueryIO 中的流式插入行時插入數據
有想法的小伙伴嗎?
提前致謝!
只是對這個問題的更新。
問題在於模式聲明和 JSON 本身。
我們將parameters
列定義為RECORD REPEATED
但parameters
是 JSON 示例中的對象。
所以我們在這里有兩個選擇。
RECORD REPEATED
更改為RECORD NULLABLE
parameters
對象,對於此選項,您必須轉換 JSON 並添加括號以將對象視為數組。例子:
{
"parameters":[
{
"parameter":[
{
"subParameter":[
{
"value":"T",
"key":"C"
},
{
"value":"1",
"key":"SEQUENCE_NUMBER"
},
{
"value":"1",
"key":"SEQUENCE_NUMBER"
}
],
"value":"C",
"key":"C"
}
]
}
]
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.