gpt4 book ai didi

Azure SQL 数据仓库 Polybase 查询 Azure Data Lake Gen 2 返回零行

转载 作者:行者123 更新时间:2023-12-02 07:02:44 28 4
gpt4 key购买 nike

为什么对 Azure Data Lake Gen 2 的 Azure SQL 数据仓库 Polybase 查询会为单个文件源返回多行,但为父文件夹源返回零行?

我创建了:

  • 主 key (创建主 key ;)
  • 凭据(创建数据库范围CREDENTIAL) - 使用 ADLS Gen 2 帐户 key
  • 外部数据源(创建外部数据源)
  • 文件格式(创建外部文件格式)
  • 外部表(CREATE EXTERNAL TABLE)

当我的外部表指向特定文件时,一切正常,即

CREATE EXTERNAL TABLE [ext].[Time]
(
[TimeID] int NOT NULL,
[HourNumber] tinyint NOT NULL,
[MinuteNumber] tinyint NOT NULL,
[SecondNumber] tinyint NOT NULL,
[TimeInSecond] int NOT NULL,
[HourlyBucket] varchar(15) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
)
WITH
(
LOCATION = '/Time/time001.txt',
DATA_SOURCE = ADLSDataSource,
FILE_FORMAT = uncompressedcsv,
REJECT_TYPE = value,
REJECT_VALUE = 2147483647
);
SELECT * FROM [ext].[Time];

返回了许多行,因此我确信上述所有项目均已正确配置。

Azure Data Lake Gen 2 中的 Time 文件夹包含许多文件,而不仅仅是 time001.txt。当我将外部表更改为指向文件夹而不是单个文件时,查询返回零行,即

CREATE EXTERNAL TABLE [ext].[Time]
(
[TimeID] int NOT NULL,
[HourNumber] tinyint NOT NULL,
[MinuteNumber] tinyint NOT NULL,
[SecondNumber] tinyint NOT NULL,
[TimeInSecond] int NOT NULL,
[HourlyBucket] varchar(15) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
)
WITH
(
LOCATION = '/Time/',
DATA_SOURCE = ADLSDataSource,
FILE_FORMAT = uncompressedcsv,
REJECT_TYPE = value,
REJECT_VALUE = 2147483647
);
SELECT * FROM [ext].[Time];

返回零行

我尝试过:

  • 地点 = '/时间/',
  • 地点 = '/时间',
  • 地点 = '时间/',
  • 地点 =“时间”,

但总是零行。我还按照 https://learn.microsoft.com/en-us/azure/synapse-analytics/sql-data-warehouse/sql-data-warehouse-load-from-azure-data-lake-store 上的说明进行操作。

我测试了文件夹中的所有文件,每个文件分别返回多行数据。

我查询了 Blob 存储中的所有文件,而不是 ADLS Gen2,“文件夹”查询按预期返回所有行。

如何使用 Azure SQL 数据仓库和 Polybase 从 Azure Data Lake Gen2 存储中“作为一个”查询文件夹中的所有文件?

最佳答案

我面临着完全相同的问题:问题出在数据源协议(protocol)上。

脚本有错误:

   CREATE EXTERNAL DATA SOURCE datasourcename
WITH (
TYPE = HADOOP,
LOCATION = 'abfss://<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="294a46475d4840474c5b695a5d465b484e4c074b45464b074a465b4c075e40474d465e5a07474c5d" rel="noreferrer noopener nofollow">[email protected]</a>',
CREDENTIAL = credential_name

解决问题的脚本:

   CREATE EXTERNAL DATA SOURCE datasourcename
WITH (
TYPE = HADOOP,
LOCATION = 'abfss://<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="b7d4d8d9c3d6ded9d2c5f7c4c3d8c5d6d0d299d3d1c499d4d8c5d299c0ded9d3d8c0c499d9d2c3" rel="noreferrer noopener nofollow">[email protected]</a>',
CREDENTIAL = credential_name

唯一需要更改的是位置。

感谢 Microsoft 支持团队在这方面为我提供的帮助。

关于Azure SQL 数据仓库 Polybase 查询 Azure Data Lake Gen 2 返回零行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61119205/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com