【发布时间】:2022-01-20 01:24:06
【问题描述】:
我按照文档中的说明安装并配置了 Zeppelin。
- 我将 GOOGLE_APPLICATION_CREDENTIALS 设置为
conf/zeppelin-env.sh中的环境变量
export GOOGLE_APPLICATION_CREDENTIALS=/home/anderson/.ssh/gcp-credentials.json
- 通过设置
zeppelin.bigquery.project_id配置 BigQuery 解释器。
完成这些设置后,我可以为公共数据集运行以下 BigQuery SQL,而不会出现任何问题。
%bigquery
#standardSQL
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
它有效。但是当我连接到私有数据集时它不起作用。
例如...
%bigquery
#standardSQL
SELECT id FROM `private_project_id.dataset.table` limit 1
导致SQL Execution returned an error! ERROR!!
我尝试在 Python 中使用相同的 SQL。 并且......它有效。
%python
from google.cloud import bigquery
client = bigquery.Client()
# Perform a query.
QUERY = ('SELECT id FROM `private_project_id.dataset.bra_survey` limit 1')
query_job = client.query(QUERY) # API request
rows = query_job.result() # Waits for query to finish
for row in rows:
print(row)
作为实验,我将gcp-credentials.json 文件名更改为gcp-credentials.json__backup 之类的名称,以测试zeppelin BigQuery 解释器是否实际读取了凭据。令人惊讶的是,当我运行 BigQuery 查询时,除了相同的错误消息 SQL Execution returned an error! 之外,没有任何错误消息。
我的意思是如果解释器实际上读取了凭证文件,我的期望是它会引发类似 cannot find credentials 错误的异常。
如何解决这个问题? 我是唯一遭受此错误的人吗?
是的。公共数据集运行良好。 问题是连接到 BigQuery 中的私有数据集。 在 Python 中,从私有数据集中检索数据没有这样的问题。 (我的意思是服务账号权限没有问题,我在几个应用中使用这个服务账号都没有问题)
【问题讨论】:
-
您能否确认您是在本地使用 Zeppelin 还是通过 Cloud Dataproc 使用?如果在本地,您能否分享您用于设置 Zeppelin 的文档(使用 GCP 凭据)?
-
@SakshiGatyan 我使用了这个文档 zeppelin.apache.org/docs/0.6.2/interpreter/bigquery.html 我还阅读了 0.10.0 文档 zeppelin.apache.org/docs/0.10.0/interpreter/bigquery.html 但是 0.10.0 文档被破坏了。我的意思是文档中有一个链接,但链接已损坏。链接文字是“Zeppelin Google Cloud Storage”
-
由于
NullPointerException即抛出此错误。当返回一个空表时。您能否确认您是否在失败和成功的尝试中都查询同一个表? -
嗨@Anderson,如果您觉得我的回答有帮助,请考虑按Stack Overflow guidelines 接受并投票,帮助更多 Stack 贡献者进行研究:)
标签: google-bigquery interpreter apache-zeppelin