azure - 未找到 Blob 存储文件上的 Azure Polybase 外部表
问题描述
提前感谢你的帮助!我在 Blob 存储上有 CSV 文件,目前正在通过 Synapse (Azure SQL DWH) 中的 polybase 成功读取这些文件。该方法如Microsoft 文档中所述。我添加了一个新文件夹(与其他文件在同一个容器中),并且在 Synapse 上通过 SSMS 创建外部表时收到以下错误消息:
消息 105002,级别 16,状态 1,行 1 外部文件访问失败,因为指定的路径名“/USA/FCT.CSV”不存在。请输入有效路径,然后重试。
如果我将文件放在另一个文件夹中(在同一个容器中)(例如“/CA/FCT.CSV”),我知道我可以从中访问文件,它可以正常工作。我觉得我已经证明文件没有问题,并且外部表创建脚本没有错误。
我的故障排除使我认为需要在 BLOB 存储容器中的文件夹上设置权限设置。我检查了“管理访问”设置是否与具有正常访问权限的文件夹相同。我还能检查什么?
已工作文件的完整路径(敏感信息替换为星号):https://***datalake.dfs.core.windows.net/marketing/CA/FCT.CSV
无效文件的完整路径:https://***datalake.dfs.core.windows.net/marketing/USA/FCT.CSV
这是确实有效的创建表脚本:
CREATE EXTERNAL TABLE [Nielsen].[USA_Fact_external]
(
[HRCH LVL] VARCHAR(40)
,[**** TOTAL MARKET1] VARCHAR(40)
,[**** COMPANY] VARCHAR(40)
,[**** BRAND] VARCHAR(40)
,[**** SEGMENT] VARCHAR(40)
,[**** TYPE] VARCHAR(40)
,[**** PACK TYPE] VARCHAR(40)
,[**** SUB BRAND] VARCHAR(40)
,[**** ACTUAL PACK SIZE] VARCHAR(40)
,[PRDC CODE] VARCHAR(40)
,[**** TOTAL MARKET22] VARCHAR(40)
,[MARKET CODE] VARCHAR(40)
,[PERIOD DESCRIPTION LONG] VARCHAR(40)
,[UNITS] BIGINT
,[EQ1] BIGINT
,[DOL] BIGINT
,[AVG UNIT PRICE] BIGINT
,[AVG EQ1 PRICE] BIGINT
,[PCTACV] BIGINT
,[EST ACV SELLING] BIGINT
,[ANY PROMO UNITS] BIGINT
,[ANY PROMO DOL] BIGINT
,[TDP] BIGINT
,[TDP YA] BIGINT
,[BASE DOL] BIGINT
,[BASE UNITS] BIGINT
,[BASE EQ] BIGINT
,[ANY PROMO EQ] BIGINT
,[FEAT WO DISP PCTACV] BIGINT
,[NUMBER OF STORES] BIGINT
,[NUMERICAL DISTRIBUTION] BIGINT
)
WITH (DATA_SOURCE = [AzureDataLakeStorage],LOCATION = N'/CA/FCT.CSV',FILE_FORMAT = [CsvFileFormat_withHeadersPipeDL],REJECT_TYPE = VALUE,REJECT_VALUE = 0)
GO
这是不起作用的创建表脚本:
CREATE EXTERNAL TABLE [Nielsen].[USA_Fact_external]
(
[HRCH LVL] VARCHAR(40)
,[**** TOTAL MARKET1] VARCHAR(40)
,[**** COMPANY] VARCHAR(40)
,[**** BRAND] VARCHAR(40)
,[**** SEGMENT] VARCHAR(40)
,[**** TYPE] VARCHAR(40)
,[**** PACK TYPE] VARCHAR(40)
,[**** SUB BRAND] VARCHAR(40)
,[**** ACTUAL PACK SIZE] VARCHAR(40)
,[PRDC CODE] VARCHAR(40)
,[**** TOTAL MARKET22] VARCHAR(40)
,[MARKET CODE] VARCHAR(40)
,[PERIOD DESCRIPTION LONG] VARCHAR(40)
,[UNITS] BIGINT
,[EQ1] BIGINT
,[DOL] BIGINT
,[AVG UNIT PRICE] BIGINT
,[AVG EQ1 PRICE] BIGINT
,[PCTACV] BIGINT
,[EST ACV SELLING] BIGINT
,[ANY PROMO UNITS] BIGINT
,[ANY PROMO DOL] BIGINT
,[TDP] BIGINT
,[TDP YA] BIGINT
,[BASE DOL] BIGINT
,[BASE UNITS] BIGINT
,[BASE EQ] BIGINT
,[ANY PROMO EQ] BIGINT
,[FEAT WO DISP PCTACV] BIGINT
,[NUMBER OF STORES] BIGINT
,[NUMERICAL DISTRIBUTION] BIGINT
)
WITH (DATA_SOURCE = [AzureDataLakeStorage],LOCATION = N'/USA/FCT.CSV',FILE_FORMAT = [CsvFileFormat_withHeadersPipeDL],REJECT_TYPE = VALUE,REJECT_VALUE = 0)
GO
这是外部数据源脚本,(敏感信息用星号代替):
CREATE EXTERNAL DATA SOURCE [AzureDataLakeStorage_Marketing] WITH (TYPE = HADOOP, LOCATION = N'abfss://marketing@***datalake.dfs.core.windows.net', CREDENTIAL = [******])
解决方案
推荐阅读
- xcode - 在 Xcode 中有单独的测试目标方案吗?
- django - 用户使用 nginx 和 docker 上传
- android - 如何使用对角线分隔器自定义 viewpager 的 tablayout?
- asp.net-mvc - 使用 ADFS 2.0 基于声明的 ASP .NET MVC 应用程序 - 重定向过多
- c# - OAuth 1.0 POST - “无效签名”C#
- python - Websocket 代码适用于 Windows 但不适用于 Linux
- google-analytics - “页面标题包含确切字符串”的谷歌分析页面标题正则表达式?
- javascript - 检查密钥是否存在
- android - 多次调用 USB 广播接收器
- arrays - 如何将硬编码数组转换为 Observable
在角度 6