【问题标题】:BigQuery to Hadoop Cluster - How to transfer data?BigQuery 到 Hadoop 集群 - 如何传输数据?
【发布时间】:2015-01-13 21:43:39
【问题描述】:

我有一个 Google Analytics (GA) 帐户,用于跟踪应用的用户活动。我设置了 BigQuery,以便可以访问原始 GA 数据。每天都有数据从 GA 传入 BigQuery。

我有一个以编程方式查询 BigQuery API 的 Python 应用。这个应用程序正在给我所需的响应,这取决于我要查询的内容。

我的下一步是从 BigQuery 获取这些数据并将其转储到 Hadoop 集群中。我想理想地使用数据创建一个配置单元表。我想围绕 python 应用程序构建类似 ETL 过程的东西。例如,我每天都会运行 etl 进程,该进程运行 python 应用程序并将数据导出到集群。

最终,这个 ETL 过程应该放在 Jenkins 上,并且应该能够在生产系统上运行。

在规划此 ETL 流程时,我需要考虑哪些架构/设计/一般因素?

关于我应该如何处理这件事有什么建议吗?我有兴趣以最简单可行的方式做到这一点。

提前致谢。

【问题讨论】:

    标签: python hadoop google-analytics google-bigquery etl


    【解决方案1】:

    从 BigQuery 到 Hadoop 的最简单方法是使用官方的 Google BigQuery Connector for Hadoop

    https://cloud.google.com/hadoop/bigquery-connector

    此连接器定义 BigQueryInputFormat 类。

    • 编写查询以选择适当的 BigQuery 对象。
    • 在 Hadoop 节点之间平均分配查询结果。
    • 将拆分解析为 java 对象以传递给映射器。 Hadoop Mapper 类接收每个选定 BigQuery 对象的 JsonObject 表示形式。

    (它使用 Google Cloud Storage 作为 BigQuery 数据和 Hadoop 使用的拆分数据之间的中介)

    【讨论】:

    • 嗨。感谢您的回答。我想出了另一种方法,将 Bigquery 数据集导出到 GCS,然后使用 gsutil 工具将数据从 GCS 存储桶下载到我的集群网关机器。
    • 我还将研究 BigQuery Connector for Hadoop 并将其与我当前的流程进行比较。再次感谢!
    • 从 BigQuery 进行简单的导出也很好,特别是因为您可以选择摄取数据的节点数量 - 有助于并行优化您获得的工作人员数量的任务。
    • 此连接器是否可以将数据导入任何 hadoop 集群?例如使用 Cloudera 的一种设置。 bdutil 中 bigquery_env.sh 中的这一行让我感到困惑,我认为这意味着它可以在现有集群中启用大查询并且不设置新集群? # 此文件包含与 bdutil_env.sh 结合使用的环境变量覆盖,以便部署启用 bigquery 的 Hadoop 集群。
    • 哦,“大查询范围”。使用那个是为了让您的 Google Compute Engine 实例可以无缝地对您的 Google BigQuery 项目进行身份验证。因此,如果您在 GCE 上使用 Cloudera 发行版,只需确保使用“bigquery”范围启动您的服务器。如果您不在 GCE 之外并且需要找出替代的身份验证方法,我建议您添加一个新的 StackOverflow 问题来解决该问题。
    【解决方案2】:

    查看Oozie。它似乎符合您的要求。它具有工作流引擎、调度支持以及 shell 脚本和配置单元支持。

    在安装和部署方面,它通常是hadoop发行版的一部分,但可以单独安装。它具有 db 作为持久层的依赖关系。这可能需要一些额外的努力。

    它有 web UI 和 rest API。如果需要,可以自动管理和监控作业。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-09-08
      • 2016-08-10
      • 1970-01-01
      • 1970-01-01
      • 2021-11-26
      • 1970-01-01
      • 2014-07-27
      • 1970-01-01
      相关资源
      最近更新 更多