2016-05-25 45 views
2

我正在使用bq命令行并试图每天在一个表中插入大量的json文件。BigQuery快速插入数百万行的方法

我的方法:

  1. 列表中的所有文件,以推动(日期命名YYYMMDDHHMM.meta1.meta2.json)
  2. 串连在同一天的文件=> YYYMMDD.ndjson
  3. 分裂YYYMMDD。 ndjson文件(500行文件的每个)YYYMMDD.ndjson_splittedij

遍历YYYMMDD.ndjson_splittedij并运行

bq insert --template_suffix=20160331 --dataset_id=MYDATASET TEMPLATE YYYMMDD.ndjson_splittedij 

此方法有效。我只是想知道是否有可能改进它。

回答

3

同样,您正在混淆流式插入和作业负载。 您不需要将每个文件分成500行(适用于流式插入)。

你可以有非常大的文件插入,看到这里列出的命令行选项卡例子:https://cloud.google.com/bigquery/loading-data#loading_csv_files

你必须只运行:压缩

bq load --source_format=NEWLINE_DELIMITED_JSON --schema=personsDataSchema.json mydataset.persons_data personsData.json 

JSON文件必须小于4 GB,如果不压缩必须低于5TB,所以更大的文件更好。总是尝试使用10行样本文件,直到您获得命令的工作。

+0

我们每天必须有1张桌子:)。似乎负载工作的配额是每天1000。 –

+0

是的,但想象一下1000 * 5TB意味着5PB。您是否认真想在同一天获得这些数据? – Pentium10

+0

误会。系统L每天在文件夹B中生成大约30 000个文件。从B脚本S生成的文件与属于文件夹B中的文件相同D. D可能包含数百万个文件。我们的目标是在尽快将它们发送到BQ之前将它们整合起来。 –

相关问题