Apache Zeppelin 的 BigQuery 解释器

概述

BigQuery 是 Google 云平台中一个高度可扩展的无操作数据仓库。如果没有合适的硬件和基础设施,查询大规模数据集可能会耗时且昂贵。Google BigQuery 通过利用 Google 基础设施的处理能力,对仅追加表进行超快速 SQL 查询,从而解决了这个问题。只需将您的数据移动到 BigQuery 中,剩下的工作交给我们处理。您可以根据业务需求控制对项目和数据的访问权限,例如授予他人查看或查询您数据的能力。

配置

名称 默认值 描述
zeppelin.bigquery.project_id Google 项目 ID
zeppelin.bigquery.wait_time 5000 查询超时时间(毫秒)
zeppelin.bigquery.max_no_of_rows 100000 最大结果集大小
zeppelin.bigquery.sql_dialect BigQuery SQL 方言(standardSQL 或 legacySQL)。如果为空,可以使用 [查询前缀](https://cloud.google.com/bigquery/docs/reference/standard-sql/enabling-standard-sql#sql-prefix) 如 '#standardSQL'。

BigQuery API

Zeppelin 是基于 BigQuery API 版本 v2-rev265-1.21.0 构建的 - API Javadocs

启用 BigQuery 解释器

在笔记本中,要启用BigQuery解释器,请点击齿轮图标并选择bigquery

提供应用程序默认凭据

在Google云平台(例如Google App Engine,Google Compute Engine)中,默认使用内置凭据。

在GCP之外,请遵循Google API认证说明,适用于Zeppelin Google Cloud Storage

使用BigQuery解释器

在一个段落中,使用%bigquery.sql来选择BigQuery解释器,然后输入针对存储在BigQuery中的数据集的SQL语句。 你可以使用BigQuery SQL参考来构建你自己的SQL。

例如,使用flights公共数据集查询机场前10个出发延误的SQL

%bigquery.sql
SELECT departure_airport,count(case when departure_delay>0 then 1 else 0 end) as no_of_delays 
FROM [bigquery-samples:airline_ontime_data.flights] 
group by departure_airport 
order by 2 desc 
limit 10

另一个例子,SQL查询从BigQuery托管的GitHub数据中最常用的Java包

%bigquery.sql
SELECT
  package,
  COUNT(*) count
FROM (
  SELECT
    REGEXP_EXTRACT(line, r' ([a-z0-9\._]*)\.') package,
    id
  FROM (
    SELECT
      SPLIT(content, '\n') line,
      id
    FROM
      [bigquery-public-data:github_repos.sample_contents]
    WHERE
      content CONTAINS 'import'
      AND sample_path LIKE '%.java'
    HAVING
      LEFT(line, 6)='import' )
  GROUP BY
    package,
    id )
GROUP BY
  1
ORDER BY
  count DESC
LIMIT
  40

技术描述

有关当前实现的深入技术细节,请参考 bigquery/README.md