Google bigquery 数据处理-BigQuery与数据处理&x2B;大查询
我们在Google bigquery 数据处理-BigQuery与数据处理&x2B;大查询,google-bigquery,Google Bigquery,我们在BigQuery表中有大量(100亿到4000亿)的原始数据。我们需要处理这些数据,以转换和创建星型模式表(可能是bigquery中的另一个数据集)形式的数据,然后atscale可以访问这些数据 需要在以下两个选项之间权衡利弊: 1。在BigQuery中编写复杂SQL,从源数据集读取数据,然后加载到目标数据集(由Atscale使用)。 2.从Dataproc使用PySpark或MapReduce和BigQuery连接器,然后将数据加载到BigQuery目标数据集 转换的复杂性包括以不同粒度
BigQuery
表中有大量(100亿到4000亿)的原始数据。我们需要处理这些数据,以转换和创建星型模式表(可能是bigquery中的另一个数据集)形式的数据,然后atscale可以访问这些数据
需要在以下两个选项之间权衡利弊:1。在
BigQuery
中编写复杂SQL,从源数据集读取数据,然后加载到目标数据集(由Atscale使用)。2.从
Dataproc
使用PySpark
或MapReduce
和BigQuery
连接器,然后将数据加载到BigQuery
目标数据集
转换的复杂性包括以不同粒度连接多个表,使用分析功能获取所需信息等。目前,该逻辑在vertica中使用多个临时表实现,以加快处理速度,我们希望在GCP(大查询或数据处理)中重新编写该处理逻辑,除此之外,您还可以使用时间范围装饰器以增量方式运行它们。请注意,将数据来回传送到BigQuery需要大量的时间和资源。当运行BigQuery时,SQL数据从一开始就不会离开BigQuery,并且您已经拥有了所有原始日志。因此,只要您的问题可以通过一系列SQL解决,我相信这是最好的方法 我们搬出了Vertica reporting集群,去年成功地重写了ETL,选项1 大约一年前,我编写了POC,比较了数据流和一系列BigQuery SQL作业,这些作业是由允许大规模SQL并行化的工作流编排的 我花了整整一个月的时间用Java编写数据流,其中包含200多个数据点和复杂的转换,每次调试能力都很差。 用一周的时间使用一系列SQL和 云函数,用于对临时表进行聚类和并行化。 我知道从那时起,CloudDataFlow有了很大的改进,但有时
数据流仅在百万级上运行良好,在数十亿条记录输入下从未完成(主要原因是洗牌基数在数十亿条记录下几乎没有变化,每条记录有200多列)。SQL方法在2小时内为十几亿美元生成了所有必需的聚合。使用potens.io进行调试和最简单的故障排除也有很大帮助 我成功地使用了选项1:Big Query非常能够使用SQL运行非常复杂的转换,除此之外,您还可以使用时间范围修饰符以增量方式运行它们。请注意,将数据来回传送到BigQuery需要大量的时间和资源。当运行BigQuery时,SQL数据从一开始就不会离开BigQuery,并且您已经拥有了所有原始日志。因此,只要您的问题可以通过一系列SQL解决,我相信这是最好的方法 我们搬出了Vertica reporting集群,去年成功地重写了ETL,选项1 大约一年前,我编写了POC,比较了数据流和一系列BigQuery SQL作业,这些作业是由允许大规模SQL并行化的工作流编排的 我花了整整一个月的时间用Java编写数据流,其中包含200多个数据点和复杂的转换,每次调试能力都很差。 用一周的时间使用一系列SQL和 云函数,用于对临时表进行聚类和并行化。 我知道从那时起,CloudDataFlow有了很大的改进,但有时
数据流仅在百万级上运行良好,在数十亿条记录输入下从未完成(主要原因是洗牌基数在数十亿条记录下几乎没有变化,每条记录有200多列)。SQL方法在2小时内为十几亿美元生成了所有必需的聚合。使用potens.io进行调试和最简单的故障排除也有很大帮助 BigQuery和
DataProc
都可以处理大量复杂数据
我认为你应该考虑两点:
BigQuery
是一个选项。如果您需要一些复杂的脚本来转换数据,或者如果您认为将来需要构建一些涉及转换的额外功能,PySpark
可能是一个更好的选择。您可以找到BigQuery脚本参考
BigQuery
和DataProc
有不同的定价系统。在BigQuery
中,您需要关心在查询中处理的数据量,而在DataProc
中,您需要关心集群的大小和VM的配置,集群运行的时间以及一些其他配置。您可以找到BigQuery
和DataProc
的定价参考。此外,您还可以在中模拟定价我希望这些信息能帮助您。无论是
BigQuery
还是DataProc
都可以处理大量复杂数据
我认为你应该考虑两点:
两个工具都可以进行复杂的转换,但必须考虑<代码> PySpabs<代码>将为您提供一个完整的PR。