我正在尝试在 Visual Studio 2015 上使用以下语法通过 polybase 创建外部表。它给了我以下错误。有人可以帮忙解决这个问题吗
CREATE EXTERNAL TABLE dbo.DimDate2External (
DateId INT NOT NULL,
CalendarQuarter TINYINT NOT NULL,
FiscalQuarter TINYINT NOT NULL
)
WITH (
LOCATION='/textfiles/DimDate2.txt',
DATA_SOURCE=AzureStorage,
FILE_FORMAT=TextFile
);
CREATE EXTERNAL DATA SOURCE AzureStorage
WITH (
TYPE = HADOOP,
LOCATION = 'wasbs://<blob_container_name>@<azure_storage_account_name>.??blob.core.windows.ne??t',
CREDENTIAL = AzureStorageCredential
);
CREATE EXTERNAL FILE FORMAT TextFile WITH ( FORMAT_TYPE = DelimitedText, FORMAT_OPTIONS (FIELD_TERMINATOR = ',') );
Run Code Online (Sandbox Code Playgroud)
由于内部错误,外部表访问失败:
'调用 HdfsBridge_IsDirExist 时引发 Java 异常。Java 异常消息:com.microsoft.azure.storage.StorageException:服务器无法对请求进行身份验证。确保 Authorization 标头的值包括签名的格式正确。:错误 [com.microsoft.azure.storage.StorageException:服务器无法对请求进行身份验证。确保 Authorization 标头的值正确形成,包括签名。] 访问外部文件时发生。
今天我发现了另一个名为Azure 数据资源管理器 (ADX) 的Azure 服务。很抱歉这样的服务比较,除了ADX我都很好理解。我觉得有一个很大的功能覆盖,所以想知道 ADX 在 Azure 基础设施中的确切作用。
当 ADX 明显优于 Synapse/Databricks 时,用例是什么?
AFAIK,ADX 是一个集群(按小时计费,如 Databricks 或 Synapse,而不是 ADLA),它为您处理数据库,并针对大规模流式摄取和临时查询进行了优化。它还支持外部表,性能较差但更便宜(您需要为 Blob/ADLS 存储付费)。
我不明白为什么我们需要 ADX,如果:
我知道您可以使用外部表格使用polybase将大量数据从Blob存储加载到Azure SQL DW.但有没有可能我们可以直接使用polybase将数据从SQL DW导入另一个SQL DW?或者还有其他方式吗?必须有一些方法来避免SQL DW中的控制节点.
我正在尝试设置一个 PolyBase (外部)表,其中的数据
SQL 服务器版本:
Microsoft SQL Azure (RTM) - 12.0.2000.8 Nov 2 2018 21:17:06
Run Code Online (Sandbox Code Playgroud)
动机是运行一些连接两个数据源的查询。
Azure SQL Server 是否附带 PolyBase 设置?我不知道如何从这些文档中提到的 azure 控制台启用“外部数据的 Polybase 查询服务”
当我尝试通过 SQL Server Management Studio 运行这些配置步骤以启用 Polybase 和设置连接时:
exec sp_configure @configname = 'polybase enabled', @configvalue = 1;
Run Code Online (Sandbox Code Playgroud)
我收到一个错误
找不到存储过程“sp_configure”
还运行此查询
SELECT SERVERPROPERTY ('IsPolyBaseInstalled') AS IsPolyBaseInstalled;
Run Code Online (Sandbox Code Playgroud)
返回 -0
但是,我可以运行这些查询并创建外部数据源
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'password';
CREATE DATABASE SCOPED CREDENTIAL …
Run Code Online (Sandbox Code Playgroud) 我已经按照本指南安装了 Microsoft SQL Server 2019 。建议在 10:30 将用户数据库目录、用户日志目录和备份目录从默认更改为驱动器 D 上的目录。
现在我在生成转储文件 C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\Log\Polybase\dump
这是来自的片段SQLDUMPER_ERRORLOG.log
:
(9E04:9E08) 12/08/19 21:19:45, ACTION, SQLDUMPER_UNKNOWN_APP.EXE, AdjustTokenPrivileges () completed with status (00000514)
(9E04:9E08) 12/08/19 21:19:45, ACTION, SQLDUMPER_UNKNOWN_APP.EXE, Input parameters: 4 supplied
(9E04:9E08) 12/08/19 21:19:45, ACTION, SQLDUMPER_UNKNOWN_APP.EXE, Parameter 1: 25340
(9E04:9E08) 12/08/19 21:19:45, ACTION, SQLDUMPER_UNKNOWN_APP.EXE, Parameter 2: 0
(9E04:9E08) 12/08/19 21:19:45, ACTION, SQLDUMPER_UNKNOWN_APP.EXE, Parameter 3: 0:0
(9E04:9E08) 12/08/19 21:19:45, ACTION, SQLDUMPER_UNKNOWN_APP.EXE, Parameter 4: 00007FF62791B360
(9E04:9E08) 12/08/19 21:19:45, ACTION, SQLDUMPER_UNKNOWN_APP.EXE, Parsed parameters:
(9E04:9E08) …
Run Code Online (Sandbox Code Playgroud) 我在azure data lake store中有一个文件.我正在使用polybase将数据从数据湖存储移动到数据仓库.我按照这里提到的所有步骤进行了操作.
假设我创建了外部表作为External_Emp,它有3列:ID,Name,Dept.
当我运行以下查询时:
select * from External_Emp;
Run Code Online (Sandbox Code Playgroud)
然后,它向我显示所有正确的记录.但是当我选择特定的列/列时,它会在一行中显示列名.例如,如果我运行以下查询:
select Name from External_Emp;
Run Code Online (Sandbox Code Playgroud)
然后输出是:
Name
-----
Name
1
2
3
Run Code Online (Sandbox Code Playgroud)
而输出应该是:
Name
------
1
2
3
Run Code Online (Sandbox Code Playgroud)
同样,当我运行查询时:
select ID, Name from External_Emp;
Run Code Online (Sandbox Code Playgroud)
然后它显示以下输出:
ID | Name
---------
ID | Name
1 | abc
2 | xyz
3 | pqr
Run Code Online (Sandbox Code Playgroud)
而输出应该是:
ID | Name
--------
1 | abc
2 | pqr
3 | xyz
Run Code Online (Sandbox Code Playgroud)
为什么在单独的行中显示列名?那是一个错误吗?
我多次检查azure数据湖中csv文件中的数据.它没有重复的列名.谢谢.
azure azure-sqldw azure-data-lake polybase sql-data-warehouse
我已经通过poly-base将Azure blob存储中的文件数据加载到Azure SQL DW外部表.现在,Blob容器中的文件已更新.现在我想加载新数据.任何人都可以建议如何通过poly base将新数据加载到外部表.我正在尝试删除外部表(如果存在)并再次创建它以加载新数据.