带有 Bigquery 的 Zeppelin 导致“SQL 执行返回错误!”
Posted
技术标签:
【中文标题】带有 Bigquery 的 Zeppelin 导致“SQL 执行返回错误!”【英文标题】:Zeppelin with Bigquery results in "SQL Execution returned an error!" 【发布时间】: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 贡献者进行研究:)
【参考方案1】:
这个错误是由于NullPointerException
而引发的,即在您的情况下,错误似乎是在返回空表时发生的。尝试查询非空 BigQuery 表。
【讨论】:
以上是关于带有 Bigquery 的 Zeppelin 导致“SQL 执行返回错误!”的主要内容,如果未能解决你的问题,请参考以下文章
在 BigQuery 中,带有空值数组列的“where”子句导致问题
Apache zeppelin - 带有角度和 zeppelin 解释器的变量范围
带有企业安全包的 HDInsight 上的 Zeppelin 笔记本