google.datalab.bigquery 和 google.cloud.bigquery 之间的区别

Difference between google.datalab.bigquery and google.cloud.bigquery

我在 Google Cloud Platform 上使用 Datalab 并尝试使用 google.datalab.bigquery 创建 BigQuery 数据集,当我发现我需要仅在 google.cloud.bigquery 库中的 .Client 方法。

bigquery 库的数据实验室和云版本有何区别?

datalab one 是云库的精简版,还是它们有不同的用途?

免责声明:这不是预期用途的概述,也不是深层差异,而是这些软件包之间表面差异的概述。

一个(不满意的答案)可能是分析使用情况,从安装中推断。

Row project                 num_downloads    
1   google-cloud-bigquery   619666   
2   datalab                 5313

我使用 bigquery 查询推断出这一点(如 here 所述):

#standardSQL
SELECT
  file.project,
  COUNT(*) AS num_downloads
FROM
  `the-psf.pypi.downloads*`
WHERE
  file.project IN ('google-cloud-bigquery','datalab')
  -- Only query the last 60 days of history
  AND _TABLE_SUFFIX BETWEEN FORMAT_DATE(
      '%Y%m%d', DATE_SUB(CURRENT_DATE(), INTERVAL 60 DAY))
      AND FORMAT_DATE('%Y%m%d', CURRENT_DATE())
GROUP BY
  file.project
ORDER BY
  num_downloads DESC

因此您可以看到,cloud bigquery 是 "more popular"(因为它会自动安装 google-cloud-python?)。

如果您想了解更多细节,请查看代码 (github: google.cloud.bigquery vs github: google.datalab.bigquery),您会发现包的代码有很多差异。

对 github (cloud vs pydatalab) 上的 Insights 页面的进一步调查向我们展示了更多差异:

cloud.bigquery 存在时间更长(自 2014 年 1 月起与 2016 年 5 月相比,假设自回购存在以来它就存在)。 Pydatalab 由 cloud.bigquery 包以外的其他贡献者开发。最后,cloud.bigquery 还有一些 activity(可能与其他包相关也包括在内)。

所以,即使这可能不是您想要或期望的答案,我可以说,从代码和文档的第一眼来看(比较 cloud vs pydatalab),pydatalab 似乎是 sligthly即使它(似乎)没有那么发达,也会更舒适。所以答案是YES,他们似乎是为了不同的目的。

google.cloud.bigquery 是 BigQuery 的 Python 客户端库。它提供对 BigQuery rest API 的所有功能的访问,类似于 Java、Go、C++ 和其他语言的客户端库。它本质上是您可以使用 bq 服务执行的操作的惯用 Python 包装器。

google.datalab.bigquery 是一个 Python 库,旨在供数据科学家在笔记本中使用。例如,它有一个获取 BigQuery 结果集并将其转换为 pandas 数据框的方法。此外,mltoolbox 可简化机器学习模型的训练和评估。没有 Java 或 Go 等价物。它使用客户端库实际与 BigQuery 对话。

更新(2019 年 7 月):google.cloud.bigquery 现已更新,包含 datalab 包过去提供的许多好东西,包括 Pandas互操作性。在这一点上,google.cloud.bigquery 应该被认为是首选的做事方式,即使在笔记本中也是如此。例如,%%bigquery 魔法是 google.cloud.bigquery 的一部分。不要在 Datalab 中使用 mltoolbox,而是使用 BigQuery ML 直接在 BigQuery 中训练 ML 模型。