我们正在使用 google-php-client-api ,以便将网站网页浏览日志流式传输到包含9列的表格中。 (由基本数据类型组成
经过10个小时或运行脚本后,我们观察到bigquery api的使用(对于 insertAll methods )变为 300K ,但在此期间 35K行仅被记录到桌子......
当我们查看谷歌云控制台时,大约 299K的300K api使用返回“成功代码”;我的意思是流媒体似乎运作良好。
我们不理解,在299K成功请求之后,如何只将35K行插入表中?
这是一个问题,因为google-php-client-api或bigquery没有将发送的数据保存到表中呢?
如果第二个是真的,我们需要多长时间才能看到发送到bigquery的实际(所有)行?
用于流数据的代码:
$rows = array();
$data = json_decode($rawjson);
$row = new Google_Service_Bigquery_TableDataInsertAllRequestRows();
$row->setJson($data);
$row->setInsertId(strtotime('now'));
$rows[0] = $row;
$req = new Google_Service_Bigquery_TableDataInsertAllRequest();
$req->setKind('bigquery#tableDataInsertAllRequest');
$req->setRows($rows);
$this->service->tabledata->insertAll($projectid, $datasetid, $tableid, $req);
提前谢谢你,
吉汗
答案 0 :(得分:3)
我们解决了这个问题。 我们看到它是由于这个代码行引起的:
$row->setInsertId(strtotime('now'));
因为我们每秒至少有10-20个请求;因为这个" insertID",发送到BigQuery,这取决于当前的时间戳; BigQuery每秒只保存1个请求,拒绝所有其他请求而不将它们保存到表中。
我们删除了这一行,现在数字是相干的。