代码之家  ›  专栏  ›  技术社区  ›  Marcin

将分区(spark)拼花加载到bigquery表

  •  0
  • Marcin  · 技术社区  · 5 年前

    我有从spark写出来的数据,到gcs的拼花文件,在日期列上进行分区。地面军事系统中的数据如下:

    gs://mybucket/dataset/fileDate=2019-06-17/000.parquet
    gs://mybucket/dataset/fileDate=2019-06-17/001.parquet
    

    fileDate 在生成的(分区的)表中,将从路径填充。我该怎么做?

    到目前为止,我尝试的是创建表并用

    bq --location=US load --source_format=PARQUET 'workspace:marcin_test.dataset_table' 'gs://mybucket/dataset/fileDate=2019-06-17/*'
    

    只要加载了数据,就可以执行此操作,但fileDate为空。

    0 回复  |  直到 5 年前
        1
  •  1
  •   Abhinav Rai    5 年前

    我假设他们是蜂巢分割,因为他们看起来像这样,但纠正我,如果我错了。试试这个:- bq load --source_format=PARQUET --autodetect --hive_partitioning_mode=AUTO --hive_partitioning_source_uri_prefix=gs://mybucket/dataset/ project-id:dataset_name.table_name gs://mybucket/dataset/fileDate=2019-06-17/*.parquet

    参考: https://cloud.google.com/bigquery/docs/hive-partitioned-loads-gcs 它应该有用。

        2
  •  1
  •   ch_mike    5 年前

    1. 将数据加载到临时表,并使用额外的步骤将数据传递到最终表,添加包含路径的列。

    2. 执行一些ETL过程(例如使用Dataprep或Dataflow),而不是使用bq工具加载数据。

        3
  •  -1
  •   Pmunozriffo    5 年前

    *.parquet 在队伍的尽头。

    bq --location=US load --source_format=PARQUET 'workspace:marcin_test.dataset_table' "gs://mybucket/dataset/fileDate=2019-06-17/*.parquet"
    
    bq load \
    --source_format=PARQUET \
    dataset.table \
    "gs://mybucket/00/*.parquet","gs://mybucket/01/*.parquet"
    

    https://cloud.google.com/bigquery/docs/loading-data-cloud-storage-parquet

    当你的拼花数据被分割的时候,这个问题就会出现,在那一刻也许是一个很好的选择来使用数据流或者之前的步骤来加载你的数据。