Ben Spark için BigQuery bağlayıcı tarafından döndürülen verilere filtre miyim?

oy
0

En talimatları adapte olması Spark ile kullanım BigQuery konektörü PySpark kullanarak özel bir BigQuery nesneden verilerin çıkarılması için. Ben Dataproc kod çalıştırıyorum. Söz konusu nesne kardinalitesi> 500million satırları içeren bir görünümüdür. Bu bildiri yayınlayacak zaman:

table_data = spark.sparkContext.newAPIHadoopRDD(
    'com.google.cloud.hadoop.io.bigquery.JsonTextBigQueryInputFormat',
    'org.apache.hadoop.io.LongWritable',
    'com.google.gson.JsonObject',
    conf=conf)

iş çıkışında ben bakın:

Bigquery connector version 0.10.7-hadoop2
Creating BigQuery from default credential.
Creating BigQuery from given credential.
Using working path: 'gs://dataproc-9e5dc592-1a35-42e6-9dd6-5f9dd9c8df87-europe-west1/hadoop/tmp/bigquery/pyspark_input20181108091647'
Estimated number of shards < desired num maps (0 < 93); clipping to 0.
Computed '2' shards for sharded BigQuery export.
Table 'projectname:datasetname.viewname' to be exported has 0 rows and 0 bytes
Estimated number of shards < desired num maps (0 < 93); clipping to 0.
Computed '2' shards for sharded BigQuery export.
Table 'projectname:datasetname.viewname' to be exported has 0 rows and 0 bytes

(Zaman damgası / mesaj düzey / ad okunabilirlik için kaldırılmıştır)

Yani 2 saatten fazla bir süre oldu ve iş hala çalışıyor, bu süre içinde daha fazla çıktı olmamıştır. Bahsettiğim gs konumda baktım ve adında bir dizin olduğunu görebilirsiniz shard-0yer olmuştur, ama boş. Esasen, son 2 saat görünür bir faaliyet yok olmuştur.

Ben bq konektörü o görünüme bütününü ayıklamak için çalışıyor endişeliyim. Ben tüm görünüm ayıklanması aksine ayıklamak için hangi verileri tanımlamak için bir sorgu verebilir bir yolu var mı?


GÜNCELLEME
Ben çıktıda bu mesajın ilgimi çekti:

Estimated number of shards < desired num maps (0 < 93); clipping to 0

Ben kod bazılarına göz attık kırıkların tahmini sayısı 0'a olacağını bana garip görünüyor ( ShardedExportToCloudStorage.java) burada idam oluyor ve yukarıdaki mesajı gelen kaydedilir computeNumShards(). Verilen numShards=0ben varsayarak yaşıyorum numTableBytes=0işlev çağrısı anlamına gelir:

tableToExport.getNumBytes();

( ShardedExportToCloudStorage.java#L97)

0 dönen ve ben sebebi olduğunu varsayalım edilir o ben erişiyorum nesne bir görünüm değil, bir tablo olmasıdır. Ben burada bir şey mıyım yoksa bir vahşi kaz kovalamak ben?


GÜNCELLEME 2 ... bir görünüm olmak kaynak nesne Aşağıdaki yapmış bir soruna neden olduğunu teorimi (yukarıda) test etmek için:

Benim dataproc küme ile aynı projede bir tablo düzenlendi

create table jt_test.jttable1 (col1 string)

İçine Eklenen veriler

insert into jt_test.jttable1 (col1) values ('foo')

masayı ve çıktılı satır sayısını okumak için bir dataproc işi Ekleyen

İşte kod:

conf = {
    # Input Parameters.
     'mapred.bq.project.id': project
    ,'mapred.bq.gcs.bucket': bucket
    ,'mapred.bq.temp.gcs.path': input_directory
    ,'mapred.bq.input.project.id': 'myproject'
    ,'mapred.bq.input.dataset.id': 'jt_test'
    ,'mapred.bq.input.table.id': jttable1
}
table_data = spark.sparkContext.newAPIHadoopRDD(
    'com.google.cloud.hadoop.io.bigquery.JsonTextBigQueryInputFormat',
    'org.apache.hadoop.io.LongWritable',
    'com.google.gson.JsonObject',
    conf=conf)
print ('got table_data')
print (table_data.toDF().head(10))
print ('row tally={}'.format(table_data.toDF().count()))

Ben dataproc pyspark işi çalıştırdığınızda, burada çıkış var:

8/11/08 14:59:26 INFO <cut> Table 'myproject:jt_test.jttable1' to be exported has 1 rows and5 bytes
got table_data
[Row(_1=0, _2=u'{col1:foo}')]
row tally=1

masanın üzerinde bir görünüm oluşturun

create view jt_test.v_jtview1 as select col1 from `myproject.jt_test.jttable1`

Aynı işi çalıştırın ama bu sefer masanın yerine görünümünü tüketmek

conf = {
    # Input Parameters.
     'mapred.bq.project.id': project
    ,'mapred.bq.gcs.bucket': bucket
    ,'mapred.bq.temp.gcs.path': input_directory
    ,'mapred.bq.input.project.id': 'myproject'
    ,'mapred.bq.input.dataset.id': 'jt_test'
    ,'mapred.bq.input.table.id': v_jtview1
}

Ben dataproc pyspark işi çalıştırdığınızda, burada çıkış var:

Table 'dh-data-dev-53702:jt_test.v_jtview1' to be exported has 0 rows and 0 bytes

ve bu kadar! Orada artık çıkış var ve iş hala yukarıda açıklandığı gibi aynı, çalışıyor. Onun etkili bir astı.

BigQuery bağlayıcı bir sınırlama gibi görünüyor - Ben görünümlerinden tüketmeye kullanamazsınız.

Oluştur 08/11/2018 saat 11:26
kaynak kullanıcı
Diğer dillerde...                            


1 cevaplar

oy
1

kök neden BigQuery Görünümler gelen ihracat desteklemediği olduğunu burada, jamiet açıklamada doğruladı @ döngü kapatmak için, sadece Tablolardan dışarıdan alır.

Cevap 08/11/2018 saat 19:34
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more