Google bigquery (解析)插入到bigquery的行数输入不相同

Google bigquery (解析)插入到bigquery的行数输入不相同,google-bigquery,bigdata,Google Bigquery,Bigdata,我使用GoogleBigQueryAPI向bigquery插入数据 public void upload(Collection<Bucket> buckets){ log.finer("Uploading " + buckets.size() + " buckets to bigquery"); List<Rows> rows=new ArrayList<Rows>(); for ( Bucket bucket : buckets) { TableRow r

我使用GoogleBigQueryAPI向bigquery插入数据

public void upload(Collection<Bucket> buckets){
log.finer("Uploading " + buckets.size() + " buckets to bigquery");
List<Rows> rows=new ArrayList<Rows>();
for (  Bucket bucket : buckets) {
TableRow row=new TableRow();
row.set("uploaded",System.currentTimeMillis() / 1000f);
row.set("codepoint",bucket.getKey().getCodepoint());
row.set("namespace",bucket.getKey().getNamespace());
row.set("kind",bucket.getKey().getKind());
row.set("op",bucket.getKey().getOp());
row.set("query",bucket.getKey().getQuery());
row.set("time",bucket.getKey().getTime() / 1000f);
row.set("reads",bucket.getReads());
row.set("writes",bucket.getWrites());
TableDataInsertAllRequest.Rows rowWrapper=new    TableDataInsertAllRequest.Rows();
rowWrapper.setJson(row);
rows.add(rowWrapper);
}
TableDataInsertAllRequest request=new      
TableDataInsertAllRequest().setRows(rows);
String tableId=tablePicker.pick();
try {
TableDataInsertAllResponse response=bigquery.tabledata().insertAll(insightDataset.projectId(),insightDataset.datasetId(),tableId,request).execute();
if (response.getInsertErrors() != null && !response.getInsertErrors().isEmpty()) {
  throw new RuntimeException("There were errors! " + response.getInsertErrors());
}
}
 catch (  IOException e) {
throw new RuntimeException(e);
}
}
公共作废上传(收集桶){
log.finer(“上传”+bucket.size()+“bucket到bigquery”);
列表行=新建ArrayList();
用于(铲斗:铲斗){
TableRow行=新TableRow();
行设置(“上载”,System.currentTimeMillis()/1000f);
set(“codepoint”,bucket.getKey().getCodepoint());
set(“namespace”,bucket.getKey().getNamespace());
row.set(“kind”,bucket.getKey().getKind());
row.set(“op”,bucket.getKey().getOp());
set(“query”,bucket.getKey().getQuery());
row.set(“time”,bucket.getKey().getTime()/1000f);
set(“reads”,bucket.getReads());
set(“writes”,bucket.getWrites());
TableDataInsertAllRequest.Rows rowWrapper=新建TableDataInsertAllRequest.Rows();
setJson(行);
添加(rowWrapper);
}
TableDataInsertAllRequest请求=新建
TableDataInsertAllRequest().setRows(行);
String tableId=tablePicker.pick();
试一试{
TableDataInsertAllResponse=bigquery.tabledata();
if(response.getInsertErrors()!=null&&!response.getInsertErrors().isEmpty()){
抛出新的RuntimeException(“有错误!”+response.getInsertErrors());
}
}
捕获(IOE异常){
抛出新的运行时异常(e);
}
}
我的问题是:

我使用2个服务器调用函数同时插入到bigquery,同一个帐户bigquery

例如:

服务器A:有500行

服务器B:有400行

如果插入到google bigquery 900行,则是正确的

但当我在谷歌bigquery中登记时,它有1300行

当我使用1台服务器进行测试时,它会向右插入(服务器A有500行,服务器B有400行)


你能帮我解决这个问题吗?

你应该正确地设置属性。您需要了解如何使用所使用的库来实现这一点

public TableDataInsertAllRequest.Rows setInsertId(java.lang.String insertId)
[Optional] A unique ID for each row. BigQuery uses this property to detect duplicate insertion requests on a best-effort basis.
Parameters:
insertId - insertId or null for none

我使用GUIID进行insertID,但它不会重复。你知道为什么吗?