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