Databricks1在Databricks中创建一个数据库(和表),并将其数据存储在存储帐户中。在Databricks2中,我想读取数据:Databricks2仅具有读取权限。我可以直接读取原始增量文件,但是我想创建一个数据库和表,这些数据也可以在Databricks UI中显示。我认为它可以通过以下方式工作:
CREATE DATABASE IF NOT EXISTS datastore_panels
LOCATION '/mnt/readOnlyTraining/tmp/panels/';
但这会产生一个权限错误,尽管tmp / panels数据库已经存在。
有没有一种方法可以从具有只读访问权限的delta之上的现有资源创建数据库/表?
我找到了解决方案。我在此上浪费了很多时间,却从未遇到过同样的问题。
解决方案实际上很简单,但是您需要知道。我有一个服务主体,可以对我的存储帐户进行读取访问。
像这样创建数据库(不要提及位置):
CREATE DATABASE IF NOT EXISTS datastore_panels
创建表(使用位置,但不设置表属性或分区:它将从增量表元数据中读取该表):
CREATE TABLE IF NOT EXISTS datastore_panels.customer_data
USING delta
LOCATION '/mnt/readOnlyTraining/delta/customer-data/'
对于那些想更好地理解这个问题的人,这是我之前尝试过的
%sql
CREATE TABLE IF NOT EXISTS datastore_panels.production_bazeilles_press_shopfloor (
reg_id INT,
year INT,
timestamp_utc TIMESTAMP,
unit STRING,
value DECIMAL (18,8),
descr_total STRING,
descr01 STRING,
descr02 STRING,
descr03 STRING,
descr04 STRING,
descr05 STRING,
descr06 STRING,
descr07 STRING,
descr08 STRING,
descr09 STRING,
descr10 STRING
)
USING delta
PARTITIONED BY (year)
LOCATION '/mnt/blob/panels/production/bazeilles/press/shopfloor'
TBLPROPERTIES ('delta.deletedFileRetentionDuration' = "interval 60 days",
'delta.autoOptimize.optimizeWrite' = 'true'
)
这是行不通的,因为spark最终只能读取,但是由于指定了列,因此tblproperties和partitionedby spark需要登录到具有只读访问权限的存储帐户,而有人试图更改这些属性。此日志记录步骤是不可能的,因此它会返回“没有权限”错误。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句