Bigquery InsertAll无法按预期工作

时间:2017-03-31 19:05:41

标签: google-bigquery

我使用以下代码从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);
      }

1 个答案:

答案 0 :(得分:1)

插入ID用作重复数据删除密钥。您使用当前时间(以分钟为单位)作为插入ID。这意味着同一分钟内的所有插入都使用相同的重复数据删除密钥,因此只有最后一个插入存活。您需要将插入ID保留为空或使用随机生成的ID作为插入ID。