【问题标题】:BigQuery replaced most of my Spark jobs, am I missing something?BigQuery 取代了我的大部分 Spark 工作,我错过了什么吗?
【发布时间】:2019-09-25 03:11:05
【问题描述】:

多年来,我一直在使用本地集群开发 Spark 作业,我们的团队最近迁移到了 Google Cloud Platform,让我们能够利用 BigQuery 等的强大功能。

问题是,我现在经常发现自己在 SQL 中编写处理步骤的次数比在 PySpark 中要多,因为它是:

  • 更容易推理(不那么冗长)
  • 更易于维护(SQL 与 scala/python 代码)
  • 如果需要,您可以在 GUI 上轻松运行它
  • 快速,无需真正考虑分区、缓存等...

最后,我只在有无法使用 SQL 表达的事情时才使用 Spark。

要清楚,我的工作流程通常是这样的:

  • 预处理(以前在 Spark 中,现在在 SQL 中)
  • 特征工程(以前在 Spark 中,现在主要在 SQL 中)
  • 机器学习模型和预测 (Spark ML)

我错过了什么吗? 以这种方式使用 BigQuery 而不是 Spark 有什么缺点吗?

谢谢

【问题讨论】:

  • 不是我的意见,但你是在征求意见,这就是我投票结束的原因。
  • 我不是在寻找意见,我在寻找使用 BigQuery 而不是 Spark 的优缺点,也许有些事情我没有考虑,也许这个选择有缺点我我不知道
  • 我认为没有缺点。也许在版本控制系统中保持 spark 可能比 SQL 更容易,但这也可能是一个意见/选择问题。
  • 或许你可以试试看BQML能不能替代Spark ML :)
  • 这是一个很好的问题,网上资料不多,希望更多的人在这里分享他们的知识。 @CARREAUClément 你在使用气流吗?我正在寻找重新分级 Airflow/CloudComposer 和 BQ_SQL/DataProc 或 DataFlow(BEAM) 的最佳实践和良好比较

标签: sql apache-spark apache-spark-sql google-bigquery bigdata


【解决方案1】:

我看到的一个缺点是 Hadoop 集群创建和完成作业所需的额外时间。通过向 BigQuery 发出直接请求,可以减少额外的时间。

如果您的任务需要并行处理,我建议使用 Spark,但如果您的应用主要用于访问 BQ,您可能需要使用 BQ 客户端库并分离当前任务:

  • BigQuery Client Libraries。它们经过优化以连接到 BQ。这里是a QuickStart,您可以使用不同的编程语言,如 python 或 java 等。

  • Spark 作业。如果您仍然需要在 Spark 中执行转换并需要从 BQ 读取数据,您可以使用the Dataproc-BQ connector。虽然此连接器默认安装在 Dataproc 中,但您可以将其安装在本地,以便继续使用 BQ 数据运行 SparkML 作业。为了以防万一,您可能需要考虑使用一些 GCP 服务,例如 AutoML、BQ ML、AI Platform Notebooks 等,它们是机器学习和 AI 的专门服务。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-05
    • 1970-01-01
    • 2017-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-02
    相关资源
    最近更新 更多