Има ли по-добър начин за зареждане на spark df в BigQuery чрез клъстер PySpark (dataporc)?

В момента използвам кода по-долу, за да заредя данни в BigQuery чрез клъстер на PySpark (dataproc), но или обработката отнема твърде много време, или се прекратява с грешка при превишено време за изпълнение. Има ли по-добър и по-бърз начин за зареждане на spark df в BigQuery?

output.write \
      .format("bigquery") \
      .option("table","{}.{}".format(bq_dataset, bq_table)) \
      .option("temporaryGcsBucket", gcs_bucket) \
      .mode('append') \
      .save()

По-долу е моята конфигурация на клъстера dataproc:

Master node : Standard (1 master, N workers)
Machine type : n1-standard-4
Number of GPUs : 0
Primary disk type : pd-standard
Primary disk size : 500GB
Worker nodes : 3
Machine type : n1-standard-4
Number of GPUs : 0
Primary disk type : pd-standard
Primary disk size : 500GB
Image version : 1.4.30-ubuntu18

comment
Какъв е размерът на данните? Какъв е размерът на клъстера - колко изпълнители, процесори, памет?   -  person David Rabinowitz    schedule 10.06.2020
comment
df.count() или df.show() работи за неограничено време и не се изпълнява, не знам защо, но предполагам, че не трябва да има 200-300 реда и добавих конфигурацията на клъстера като част от въпроса.   -  person Tracy    schedule 11.06.2020


Отговори (1)


Моля, уверете се, че използвате най-новата версия на SparkBigQueryConnector.

Опитайте да тествате кода си с други междинни формати, като avro, orc и parquet. Avro има тенденция да се представя по-добре с по-големи данни.

Ако данните, които пишете, са наистина огромни, опитайте да добавите повече работници или да изберете различен тип машина.

person Gaurangi Saxena    schedule 10.06.2020