我使用以下代码从FILENAME插入日志。日志文件包含1000行。随着新的线路被添加几秒钟。但是,当我运行此代码时,结果表只有15-20个奇数行。
Rows dfpadunit = new TableDataInsertAllRequest.Rows();
List<Rows> dfpadunits = new ArrayList<Rows>();
TableDataInsertAllRequest content = new TableDataInsertAllRequest();
content.setIgnoreUnknownValues(true);
content.setSkipInvalidRows(true);
reader = new BufferedReader(new FileReader( FILENAME ) );
while( running ) {
while ((line = reader.readLine()) != null) {
TableRow aRow = new TableRow();
aRow.set("RAW_DATA", line);
String time = BigqueryUtils.getCurrentYYMMDDHHMM();
aRow.set("TIME", time);
dfpadunit.setJson(aRow);
dfpadunit.setInsertId(time);
dfpadunits.add(dfpadunit);
}
if(dfpadunits.size() > 0) {
content.setRows(dfpadunits);
TableDataInsertAllResponse response = BQUtils.run(PRE_STG_DATA_SET_ID, DESTINATION_TABLE, content);
dfpadunits.clear();
if(response != null) {
formatTable();
}
}
System.out.println("About to sleep");
Thread.sleep( 1000 * 60);
}
答案 0 :(得分:1)
插入ID用作重复数据删除密钥。您使用当前时间(以分钟为单位)作为插入ID。这意味着同一分钟内的所有插入都使用相同的重复数据删除密钥,因此只有最后一个插入存活。您需要将插入ID保留为空或使用随机生成的ID作为插入ID。