来自java的流插入:templateSuffix

Posted

技术标签:

【中文标题】来自java的流插入:templateSuffix【英文标题】:Stream insert from java: templateSuffix 【发布时间】:2016-04-26 16:10:32 【问题描述】:

我想使用 templateSuffix 将数据从我的 java 代码流式传输到 BigQuery 表,但我无法使其正常工作。我的代码:

return bigquery.tabledata()
        .insertAll(
                projectId,
                datasetId,
                tableId,
                new TableDataInsertAllRequest()
                        .setTemplateSuffix(templateSuffix)
                        .setRows(singletonList(row))
        ).execute();

当我使用 projectId、datasetId、MyTable20160426 和 20160426 运行它时,我收到错误:

"message" : "404 Not found: Table projectId:datasetId.MyTable20160426"

当我使用 projectId、datasetId、MyTable 和 20160426 运行它时,我收到错误:

"message" : "404 Not found: Table projectId:datasetId.MyTable"

表 MyTable 已经存在并且已经在日期模板化(我使用了 GCS 的批量上传)(20160426 是今天的日期)

我是如何让它工作的?

我应该从哪里了解问题所在?

谢谢

【问题讨论】:

另外,我在哪里提供架构?我在用于流式传输的 java API 中找不到它 【参考方案1】:

首先,基表projectId:datasetId.MyTable 应该存在并且应该已经有一个模式。这就是 BigQuery 知道如何查找创建的模板化表的架构的方式。

其次,您应该在请求中传递 MyTable 而不是 MyTable20160426 作为表 ID。

第三,缓存表的存在(或不存在)。因此,如果您收到“未找到”错误然后创建表,您仍然会收到“未找到”错误长达半小时。

听起来您可以等待再试一次。如果这不起作用,请提供您正在使用的实际项目、数据集和表 ID,并将详细信息通过电子邮件发送至 tigani@google.com,我可以帮助调查发生了什么。

【讨论】:

以上是关于来自java的流插入:templateSuffix的主要内容,如果未能解决你的问题,请参考以下文章

BigQuery:插入行,但不写

Google BigQuery - 插入所有表后缀失败

Java IO流体系中常用的流分类

您是不是必须在 Flutter 中手动处理来自 streamprovider 的流?

在颤动中合并来自 Firestore 的流

保存来自 URL 的流