2016-04-04 21 views
2

BigQueryIO.Read kullanarak google veri akışında "HTTP isteği sırasında taşıma hatası" alıyorum.HTTP isteği sırasında Google Dataflow ve Bigquery Transport hatası

Kodu:

PipelineOptionsFactory.register(UserClickOptions.class); 
DataflowPipelineOptions options = 
    PipelineOptionsFactory.fromArgs(args).as(UserClickOptions.class); 
Pipeline p = Pipeline.create(options); 

...... 

final PCollection<TableRow> result = 
    p.apply(BigQueryIO.Read.named("lookup") 
     .fromQuery(Query.getLookupQuery())); 

Benim sorgu gibidir:

SELECT ROW_NUMBER() OVER() as Id, prop11 as X FROM (
    SELECT prop11 FROM  
    (TABLE_DATE_RANGE([Mapping.network_v2_], 
    DATE_ADD(CURRENT_TIMESTAMP(), -1, 'YEAR'),CURRENT_TIMESTAMP())) 
    WHERE (REGEXP_MATCH(pagename,"^[1-9][^404]")) 
    AND (prop11 IS NOT null AND prop11 !="") 
    GROUP EACH BY prop11; 

BigQuery'yi üzerinde çalışan sorgu çalışır ve verilerin 3 ay boyunca boru hattı çalışmaları teselli eğer. Bir yıl için yaklaşık 12 milyon satır.

durum izleme:

(9e64c4000646eed): Workflow failed. Causes: (d785ff42d5d40091): 
S06:CPNlookup+ParDo(Cpn2Csv)+ParDo(Row2KV) 
+cpn2File/FileBasedSink.ReshardForWrite/Window.Into() 
+cpn2File/FileBasedSink.ReshardForWrite/RandomKey 
+cpn2File/FileBasedSink.ReshardForWrite/GroupByKey/Reify 
+cpn2File/FileBasedSink.ReshardForWrite/GroupByKey/Write failed., 
(eec2b6fa988abf05): BigQuery: query execution in project "cip-newsuk-data" failed., 
(eec2b6fa988abbce): BigQuery execution failed., 
(eec2b6fa988ab897): Transport error during HTTP request. 

Güncelleme 12/Nisan/2006 :: Ben verilerin bir gün değerinde bu başarısızlık alıyorum ama frekans çok az veri 3 ay karşılaştırma edilir .

+1

Taşıma hatasını bildiren istisnaları ekleyebilir misiniz? Ayrıca, boru hattı sonunda başarılı/başarısız (istisnalar otomatik olarak yeniden denenmiş, bu yüzden istisnalar olabilir ve yine de başarılı olabilir). –

+0

@BenChambers istisnası eklendi – gana

+0

Teşekkürler, bir göz atıyoruz. –

cevap

3

Bunu takip ettiğimizi ve yakın gelecekte sabitleneceğini umuyoruz. Bu arada, şu an için engelini kaldıran bir çalışma olabilir.

TABLE_DATE_RANGE yerine TABLE_DATE_RANGE_STRICT kullanmayı denediğinizde, hata oluşuyor olabilir. Bu, tarih aralığı tarafından beklenen tüm tabloların sizin için mevcut olabilecek veya olmayabilecek mevcut olmasını gerektirir. TABLE_DATE_RANGE_STRICT hakkında daha fazla ayrıntı için table wildcard functions konulu belgelere bakın

SELECT ROW_NUMBER() OVER() as Id, prop11 as X FROM (
    SELECT prop11 FROM  
    (TABLE_DATE_RANGE_STRICT([Mapping.network_v2_], 
    DATE_ADD(CURRENT_TIMESTAMP(), -1, 'YEAR'),CURRENT_TIMESTAMP())) 
WHERE (REGEXP_MATCH(pagename,"^[1-9][^404]")) 
AND (prop11 IS NOT null AND prop11 !="") 
GROUP EACH BY prop11; 

: Eğer sorgunuzu değiştirirseniz Örnek olarak

.

+0

Günlük bilge tablosundaki bir veri var. TABLE_DATE_RANGE_STRICT işlevini koyarsam, eksik veri günlerinden şikayetçi olur. Bir yıl içinde birkaç günlüğüne veri kaçırıyorum. Bu işlevi kullanmak ve doğrulamak zor olacaktır. – gana