大型bigquery加载作业的最可靠格式

时间:2019-04-01 20:54:12

标签: google-bigquery

我有一个100 GB的表,正试图加载到Google bigquery中。它作为一个100GB的avro文件存储在GCS上。

当前我的bq load工作失败,并显示了无用的错误消息:

UDF worker timed out during execution.; Unexpected abort triggered for
worker avro-worker-156907: request_timeout

我正在考虑尝试其他格式。我了解bigquery支持多种格式(AVRO,JSON,CSV,Parquet等),并且原则上可以以任何一种格式加载大型数据集。

但是,我想知道是否有人在加载到bigquery中时会遇到哪种格式最可靠/最不容易在实践中出现怪癖?

1 个答案:

答案 0 :(得分:1)

可能我将按照以下步骤解决:

  1. 创建大量 csv 格式的小文件
  2. 将文件发送到 GCS

将文件复制到GCS的命令:

gsutil -m cp <local folder>/* gs:<bucket name>
  

gsutil -m选项以执行并行   (多线程/多处理)

此后,我将使用 Cloud Dataflow默认模板 GCS 移至 BQ link。 (请记住,使用默认模板不需要代码)

以下是调用数据流link的示例:

gcloud dataflow jobs run JOB_NAME \
    --gcs-location gs://dataflow-templates/latest/GCS_Text_to_BigQuery \
    --parameters \
javascriptTextTransformFunctionName=YOUR_JAVASCRIPT_FUNCTION,\
JSONPath=PATH_TO_BIGQUERY_SCHEMA_JSON,\
javascriptTextTransformGcsPath=PATH_TO_JAVASCRIPT_UDF_FILE,\
inputFilePattern=PATH_TO_YOUR_TEXT_DATA,\
outputTable=BIGQUERY_TABLE,\
bigQueryLoadingTemporaryDirectory=PATH_TO_TEMP_DIR_ON_GCS