我对 Azure 完全没有经验,但我的任务是设置上述内容。无服务器 SQL 外部 tables 由一家签订合同的公司设置,并使用 SynapseDeltaFormat 作为格式,如果这很重要的话。以这种方式创建的 tables 之一有一个列,我们希望在其中处理至少 25 个字符长的记录以进行情感分析。我能够在网上找到的所有示例都只是让您使用其他一些外部文件作为源,在这种情况下,这不是我们想要做的。数据已被拉入无服务器 SQL 环境。事实上,我什至找不到将情感分析添加到外部数据 tables 的参考,因为它似乎无法在没有现有数据源的情况下创建。有没有人有可用的资源或信息来帮助我正在尝试做的事情?我认为移动数据需要一个 pipeline 和一个或多个笔记本,但我终生无法找到解释如何设置这样一个引擎的资源。
回答1
在开始使用 Synapse 之前,您必须首先了解需求和架构。
外部 table 指向位于 Hadoop、Azure 存储 blob 或 Azure Data Lake Storage 中的数据。外部 tables 用于从文件中读取数据或将数据写入 Azure 存储中的文件。使用 Synapse SQL,您可以使用外部 tables 通过专用 SQL 池或无服务器 SQL 池读取外部数据。
你提到——
数据已被拉入无服务器 SQL 环境。
它的具体位置在哪里?它是在 Azure Data Lake、Cosmos DB 或 Dataverse 中还是在专用 SQL 池中?
根据源代码,您需要设计架构。
如果数据在专用 SQL 池中,我建议您使用专用 SQL 池分析而不是无服务器池。要知道 Dedicated Pool 中的数据是否存在,您需要检查数据是如何创建的。例如,当与 CREATE TABLE AS SELECT 语句一起使用时,从外部 table 中选择会将数据导入到专用 SQL 池中的 table 中。
既然你提到了无服务器 SQL 池,我假设你已经在 Azure 存储帐户中创建了一个数据源。
Synapse SQL 池中的任何外部 tables 都遵循以下层次结构:
CREATE EXTERNAL DATA SOURCE
引用外部 Azure 存储并指定应用于访问存储的凭据。CREATE EXTERNAL FILE FORMAT
描述 CSV 或 Parquet 文件的格式。CREATE EXTERNAL TABLE
放置在具有相同文件格式的数据源上的文件之上。
您可以使用以下语法创建外部 TABLE:
CREATE EXTERNAL DATA SOURCE <data_source_name>
WITH
( LOCATION = '<prefix>://<path>'
[, CREDENTIAL = <database scoped credential> ]
, TYPE = HADOOP
)
[;]
其次,要创建外部文件格式,您可以参考以下语法:
-- Create an external file format for PARQUET files.
CREATE EXTERNAL FILE FORMAT file_format_name
WITH (
FORMAT_TYPE = PARQUET
[ , DATA_COMPRESSION = {
'org.apache.hadoop.io.compress.SnappyCodec'
| 'org.apache.hadoop.io.compress.GzipCodec' }
]);
--Create an external file format for DELIMITED TEXT files
CREATE EXTERNAL FILE FORMAT file_format_name
WITH (
FORMAT_TYPE = DELIMITEDTEXT
[ , DATA_COMPRESSION = 'org.apache.hadoop.io.compress.GzipCodec' ]
[ , FORMAT_OPTIONS ( <format_options> [ ,...n ] ) ]
);
<format_options> ::=
{
FIELD_TERMINATOR = field_terminator
| STRING_DELIMITER = string_delimiter
| FIRST_ROW = integer
| USE_TYPE_DEFAULT = { TRUE | FALSE }
| ENCODING = {'UTF8' | 'UTF16'}
| PARSER_VERSION = {'parser_version'}
}
最新,您可以使用以下语法创建外部 TABLE:
CREATE EXTERNAL TABLE { database_name.schema_name.table_name | schema_name.table_name | table_name }
( <column_definition> [ ,...n ] )
WITH (
LOCATION = 'folder_or_filepath',
DATA_SOURCE = external_data_source_name,
FILE_FORMAT = external_file_format_name
[, TABLE_OPTIONS = N'{"READ_OPTIONS":["ALLOW_INCONSISTENT_READS"]}' ]
[, <reject_options> [ ,...n ] ]
)
[;]
<column_definition> ::=
column_name <data_type>
[ COLLATE collation_name ]
<reject_options> ::=
{
| REJECT_TYPE = value,
| REJECT_VALUE = reject_value,
| REJECT_SAMPLE_VALUE = reject_sample_value,
| REJECTED_ROW_LOCATION = '/REJECT_Directory'
}
参考官方文档https://docs.microsoft.com/en-us/azure/synapse-analytics/get-started-analyze-sql-on-demand,https://docs.microsoft.com/en-us/azure/synapse-analytics/sql/develop-tables-external-tables?tabs=hadoop#external-tables-in-dedicated-sql-pool-and-serverless-sql-pool。