0
我想流使用templateSuffix和使用Java API 附加到表名的日期分區數據到大的查詢,但我得到以下異常:流數據到谷歌的BigQuery模板表日期分區
com.google.api.client.googleapis.json.GoogleJsonResponseException: 400 Bad Request
{
"code" : 400,
"errors" : [ {
"domain" : "global",
"location" : "suffix",
"locationType" : "other",
"message" : "Table name should only contain _, a-z, A-Z, or 0-9.",
"reason" : "invalid"
} ],
"message" : "Table name should only contain _, a-z, A-Z, or 0-9."
}
我使用的API爲:
String tableName = "testTable$201701"; // 201701 is partition_id
TableDataInsertAllRequest request = new TableDataInsertAllRequest()
.setIgnoreUnknownValues(true)
.setRows(rows);
// add a template suffix
request.setTemplateSuffix(templateSuffix);
return bigquery
.tabledata()
.insertAll(projectId, datasetId, tableName, request)
.execute();
只有templateSuffix或放在桌子上只有日期分區工作正常。但不是兩個在一起。任何想法如何解決這個問題?
那麼,在我的情況下,我有日期分區表。但它超過了每秒100K的插入限制。 (我的速度約爲每秒300K)那麼,我有什麼選擇?這就是我試圖創建多個模板表的原因。但由於明顯的性能原因,我必須保留日期分區。 – figaro
只是簡單的選擇:你可以讓我們說10個表中的每一個表示模10,根據你的數據/環境有意義。所以你只需在你的代碼中進行管理即可。例如,如果您有多臺服務器從您流向BigQuery - 您可以對這些服務器進行模塊化等。希望您有想法 –
正確。但我希望使用模板表可以免除管理個人表格架構的開銷。在這種情況下,我必須自己創建所有這10個具有相同模式的表。對? – figaro