Databricks -从Snowflake读取表到Databricks



我已经看到了一些关于Databricks到Snowflake的问题,但我的问题是如何从Snowflake获得一个表到Databricks。

到目前为止我所做的:创建了一个集群,并将集群连接到我的笔记本(我使用Python)

# Use secrets DBUtil to get Snowflake credentials.
user = dbutils.secrets.get("snowflake-user", "secret-user")
password = dbutils.secrets.get("snowflake-pw", "secret-pw")
sf_url = dbutils.secrets.get("snowflake-url", "secret-sf-url")
# snowflake connection options
options = {
"sfUrl": sf_url,
"sfUser": user,
"sfPassword": password,
"sfDatabase": "DEV",
"sfSchema": "PUBLIC",
"sfWarehouse": "DEV_WH"
}

然后我尝试使用spark。read读取雪花中的FBK_VIDEOS表:

# Read table from Snowflake.
df = spark.read.format("snowflake").options(**options).option("dbtable", "FBK_VIDEOS").load()

我也尝试过:option("dbtable", "SELECT * FROM FBK_VIDEOS").load()

但是我看到df的以下错误:

net.snowflake.client.jdbc。SQL编译错误:

展开后的回溯显示了这一点:

Py4JJavaError                             Traceback (most recent call last)
<command-3339556253176158> in <module>
1 # Read table from Snowflake.
----> 2 df = spark.read.format("snowflake").options(**options).option("dbtable", "FBK_VIDEOS").load()
3 
4 display(df)
/databricks/spark/python/pyspark/sql/readwriter.py in load(self, path, format, schema, **options)
208             return self._df(self._jreader.load(self._spark._sc._jvm.PythonUtils.toSeq(path)))
209         else:
--> 210             return self._df(self._jreader.load())
211 
212     def json(self, path, schema=None, primitivesAsString=None, prefersDecimal=None,
/databricks/spark/python/lib/py4j-0.10.9-src.zip/py4j/java_gateway.py in __call__(self, *args)
1302 
1303         answer = self.gateway_client.send_command(command)
-> 1304         return_value = get_return_value(
1305             answer, self.gateway_client, self.target_id, self.name)

为完整性和将来可能遇到类似问题的用户提供答案。

在评论中说:雪花使用基于角色的访问控制的系统,这是极其重要的角色使用必要的特权。在本例中,代码中没有显示USE ROLE,因此运行查询时活动的任何角色都没有足够的权限。

相关内容

  • 没有找到相关文章

最新更新