問題
您嚐試使用啟用了表acl的集群創建表,但出現以下錯誤:
SQL語句錯誤:SecurityException:用戶沒有權限選擇任何文件。
導致
如果您不是管理員,並且沒有足夠的權限創建表,則會在啟用表acl的集群上發生此錯誤。
AWS
例如,在您的筆記本中,您嚐試使用位於S3上的Parquet數據源創建一個表:
CREATE TABLE mytable USING PARQUET OPTIONS (PATH='s3://my-root bucket/subfolder/my-table')刪除
Azure
例如,在您的筆記本中,您嚐試使用位於Azure Blob Storage上的Parquet數據源創建一個表:
創建表mytable USING PARQUET OPTIONS (PATH='wasbs://my-container@my-storage-account.blob.core.windows.net/my-table')刪除
解決方案
您應該要求管理員授予您訪問blob存儲文件係統的權限,可以使用以下選項之一。如果管理員不能授予您對數據對象的訪問權限,則必須請求管理員為您創建表。
- 如果你想用創建表為select語句創建表時,管理員應授予您權限選擇文件係統上的特權:
授予“user1”任意文件的選擇權限
- 例子商品交易顧問基金聲明:
Azure
CREATE TABLE mytable AS SELECT * FROM parquet. ' wasbs://my-container@my-storage-account.blob.core.windows.net/my-table '刪除
- 如果你想用Ctop(創建表選項路徑)語句要使表生效,管理員必須通過授予來提升您的權限修改除了選擇.
授予用戶user1任意文件的選擇、修改權限
例子CTOP聲明:
Azure
創建表mytable USING PARQUET OPTIONS (PATH='wasbs://my-container@my-storage-account.blob.core.windows.net/my-table')刪除
AWS
授予上述數據訪問權限不會取代任何底層IAM角色或S3桶策略。例如,如果一個撥款聲明像授權用戶1選擇、修改任何文件如果集群上的IAM角色顯式拒絕讀取目標S3桶,則格蘭特語句不會使桶或桶內的對象突然可讀。
刪除Azure
授予上麵描述的數據訪問權限不會取代任何底層用戶權限或Blob Storage容器訪問控製。例如,如果一個撥款聲明像授權用戶1選擇、修改任何文件執行,但附加到集群的用戶權限顯式拒絕讀取目標容器,則格蘭特語句不會使容器或容器內的對象突然可讀。
刪除