2017-03-31 67 views
0

我正在使用以下代碼從FILENAME插入日誌。日誌文件包含1000行。隨着新的線路增加了幾秒鐘。但是,當我運行此代碼時,生成的表格只有15-20個奇數行。Bigquery InsertAll不按預期工作

 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

如何在BigQuery中檢查表的大小? –

+0

一個簡單的選擇計數(*)。我也在一天後嘗試了這一點,它仍然是一樣的。 –

+0

插入用作重複數據刪除鍵。您將以分鐘爲單位的當前時間用作插入ID。這意味着在同一分鐘內的所有插入使用相同的重複數據刪除鍵 - 只有最後一個存活。您將希望將插入ID保留爲空或使用隨機生成的ID作爲插入ID –

回答

1

插入ID用作重複數據刪除鍵。您將以分鐘爲單位的當前時間用作插入ID。這意味着在同一分鐘內的所有插入使用相同的重複數據刪除鍵,因此只有最後一個存活。您將希望將插入ID保留爲空或使用隨機生成的ID作爲插入ID。