# BigQuery 解释器 原文链接 : [http://zeppelin.apache.org/docs/0.7.2/interpreter/bigquery.html](http://zeppelin.apache.org/docs/0.7.2/interpreter/bigquery.html) 译文链接 : [http://www.apache.wiki/pages/viewpage.action?pageId=10030770](http://www.apache.wiki/pages/viewpage.action?pageId=10030770) 贡献者 : [片刻](/display/~jiangzhonglian) [ApacheCN](/display/~apachecn) [Apache中文网](/display/~apachechina) ## 概述 [BigQuery](https://cloud.google.com/bigquery/what-is-bigquery)是Google Cloud Platform中高度可扩展的无操作数据仓库。如果没有正确的硬件和基础架构,则查询大量数据集可能会耗时且昂贵。Google BigQuery通过使用Google基础设施的处理能力,启用超级快速SQL查询,仅针对仅附加表格来解决此问题。简单地将您的数据移动到BigQuery中,让我们处理辛苦的工作。您可以根据业务需求控制对项目和数据的访问,例如让他人查看或查询您的数据。 ## 配置 | Name | Default Value | Description | | --- | --- | --- | | zeppelin.bigquery.project_id |   | Google 项目ID | | zeppelin.bigquery.wait_time | 5000 | 以毫秒为单位查询超时 | | zeppelin.bigquery.max_no_of_rows | 100000 | 最大结果集大小 | ## BigQuery API Zeppelin是针对BigQuery API版本v2-rev265-1.21.0 - [API Javadocs](https://developers.google.com/resources/api-libraries/documentation/bigquery/v2/java/latest/)构建的。 ## 启用BigQuery解释器 在笔记本中,要启用**BigQuery**解释器,请单击**Gear**图标并选择**bigquery**。 ### 设置服务帐户凭据 为了在Google Cloud Engine之外运行BigQuery解释器,您需要按照以下说明提供身份验证[凭据](https://developers.google.com/identity/protocols/application-default-credentials): * 转到[API控制台凭据页面](https://console.developers.google.com/project/_/apis/credentials) * 从项目下拉列表中选择您的项目。 * 在`Credentials`页面上,选择`Create credentials`下拉菜单,然后选择`Service account key`。 * 从服务帐户下拉列表中,选择一个现有的服务帐户或创建一个新的服务帐户。 * 对于`Key type`,选择`JSON`键选项,然后选择`Create`。该文件自动下载到您的计算机。 * 将`*.json`您刚刚下载的文件放在您选择的目录中。该目录必须是私有的(您不能让任何人访问此目录),但您的Zeppelin实例可以访问。 * 将环境变量设置为下载`GOOGLE_APPLICATION_CREDENTIALS`的JSON文件的路径。 * 无论是GUI:在解释器配置页面CAPITAL_CASE中的属性名称设置env vars * 或者`zeppelin-env.sh`:只是将其添加到文件的末尾。 ## 使用BigQuery解释器 在段落中,用于`%bigquery.sql`选择**BigQuery**解释器,然后根据存储在BigQuery中的数据集输入SQL语句。您可以使用[BigQuery SQL Reference](https://cloud.google.com/bigquery/query-reference)构建自己的SQL。 例如,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](https://github.com/apache/zeppelin/blob/master/bigquery/README.md)。