本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
適用於 Azure Synapse 分析
此連接器無法向 Glue Data Catalog 註冊為聯合型目錄。此連接器不支援 Lake Formation 中在目錄、資料庫、資料表、資料欄、資料列和標籤層級定義的資料存取控制。此連接器使用 Glue Connections 來集中 Glue 中的組態屬性。
先決條件
使用 Athena 主控台或 AWS Serverless Application Repository,將連接器部署到您的 AWS 帳戶 。如需詳細資訊,請參閱 建立資料來源連線 或 使用 AWS Serverless Application Repository 部署資料來源連接器。
限制
-
不支援寫入 DDL 操作。
-
在多工器設定中,在所有資料庫執行個體之間共用溢出儲存貯體和字首。
-
任何相關的 Lambda 限制。如需詳細資訊,請參閱《AWS Lambda 開發人員指南》中的 Lambda 配額。
-
在篩選條件中,您必須將
Date
和Timestamp
資料類型轉換為適當的資料類型。 -
若要搜尋類型
Real
和Float
的負值,請使用<=
或者>=
運算子。 -
不支援
binary
、varbinary
、image
、和rowversion
資料類型。
條款
下列術語與 Synapse 連接器相關。
-
資料庫執行個體 - 在內部部署、Amazon EC2 或 Amazon RDS 上部署的任何資料庫執行個體。
-
處理常式 - 存取資料庫執行個體的 Lambda 處理常式。處理常式可以用於中繼資料或資料記錄。
-
中繼資料處理常式 - 從資料庫執行個體中擷取中繼資料的 Lambda 處理常式。
-
記錄處理常式 - 從資料庫執行個體中擷取資料記錄的 Lambda 處理常式。
-
複合處理常式 - 從資料庫執行個體中擷取中繼資料和資料記錄的 Lambda 處理常式。
-
屬性或參數 - 處理常式用來擷取資料庫資訊的資料庫屬性。您可以將這些屬性設定為 Lambda 環境變數。
-
連接字串 - 用來建立資料庫執行個體連線的文字字串。
-
目錄 – 向 Athena 註冊的非AWS Glue 目錄,是
connection_string
屬性的必要字首。 -
多工處理常式 - 可以接受和使用多個資料庫連接的 Lambda 處理常式。
參數
使用本節中的參數來設定 Synapse 連接器。
注意
Athena 資料來源連接器於 2024 年 12 月 3 日及之後建立,使用 AWS Glue 連線。
下列參數名稱和定義適用於 2024 年 12 月 3 日之前建立的 Athena 資料來源連接器。這些可能與其對應的AWS Glue 連線屬性不同。自 2024 年 12 月 3 日起,只有在您手動部署舊版 Athena 資料來源連接器時,才能使用下列參數。
連接字串
使用下列格式的 JDBC 連接字串來連接資料庫執行個體。
synapse://${
jdbc_connection_string
}
使用多工處理常式
您可以使用多工器透過單一 Lambda 函數連接到多個資料庫執行個體。按目錄名稱路由請求。在 Lambda 中使用下列類別。
處理常式 | 類別 |
---|---|
複合處理常式 | SynapseMuxCompositeHandler |
中繼資料處理常式 | SynapseMuxMetadataHandler |
記錄處理常式 | SynapseMuxRecordHandler |
多工處理常式參數
參數 | 描述 |
---|---|
$ |
必要。資料庫執行個體連接字串。在環境變數前面加上 Athena 中使用的目錄名稱。例如,如果向 Athena 註冊的目錄為 mysynapsecatalog ,則環境變數名稱為 mysynapsecatalog_connection_string 。 |
default |
必要。預設的連接字串。目錄為 lambda:${ AWS_LAMBDA_FUNCTION_NAME } 時,使用此字串。 |
下列範例屬性適用於支援兩個資料庫執行個體的 Synapse MUX Lambda 函數:synapse1
(預設) 和 synapse2
。
屬性 | Value |
---|---|
default |
synapse://jdbc:synapse://synapse1.hostname:port;databaseName= |
synapse_catalog1_connection_string |
synapse://jdbc:synapse://synapse1.hostname:port;databaseName= |
synapse_catalog2_connection_string |
synapse://jdbc:synapse://synapse2.hostname:port;databaseName= |
提供憑證
要在 JDBC 連接字串中提供資料庫的使用者名稱和密碼,可以使用連接字串屬性或 AWS Secrets Manager。
-
連接字串 - 可以將使用者名稱和密碼指定為 JDBC 連接字串中的屬性。
重要
作為安全最佳實務,請勿在您的環境變數或連線字串中使用硬式編碼憑證。如需將硬式編碼秘密移至 的資訊 AWS Secrets Manager,請參閱AWS Secrets Manager 《 使用者指南》中的將硬式編碼秘密移至 AWS Secrets Manager 。
-
AWS Secrets Manager – 若要搭配 Athena 聯合查詢功能使用 AWS Secrets Manager,連接至 Lambda 函數的 VPC 應具有網際網路存取
或 VPC 端點,以連接至 Secrets Manager。 您可以將秘密的名稱放入 JDBC 連線字串 AWS Secrets Manager 。連接器將秘密名稱取代為 Secrets Manager 中的
username
和password
值。對於 Amazon RDS 資料庫執行個體,已緊密整合此支援。如果您使用 Amazon RDS,強烈建議使用 AWS Secrets Manager 和 登入資料輪換。如果您的資料庫不使用 Amazon RDS,請以下列格式將憑證儲存為 JSON:
{"username": "${username}", "password": "${password}"}
帶有秘密名稱的連接字串範例
以下字串具有秘密名稱 ${secret_name}。
synapse://jdbc:synapse://hostname:port;databaseName=
<database_name>
;${secret_name
}
連接器會使用秘密名稱來擷取秘密並提供使用者名稱和密碼,如下列範例所示。
synapse://jdbc:synapse://hostname:port;databaseName=
<database_name>
;user=<user>
;password=<password>
使用單一連接處理常式
您可以使用下列單一連接中繼資料和記錄處理常式來連接至單一 Synapse 執行個體。
處理常式類型 | 類別 |
---|---|
複合處理常式 | SynapseCompositeHandler |
中繼資料處理常式 | SynapseMetadataHandler |
記錄處理常式 | SynapseRecordHandler |
單一連接處理常式參數
參數 | 描述 |
---|---|
default |
必要。預設的連接字串。 |
單一連接處理常式支援一個資料庫執行個體,並且必須提供 default
連接字串參數。忽略所有其他連接字串。
下列範例屬性適用於 Lambda 函數所支援的單一 Synapse 執行個體。
屬性 | Value |
---|---|
default |
synapse://jdbc:sqlserver://hostname:port;databaseName= |
設定 Active Directory 身分驗證
Amazon Athena Azure Synapse 連接器支援 Microsoft Active Directory 身分驗證。開始之前,您必須在 Microsoft Azure 入口網站中設定管理使用者,然後使用 AWS Secrets Manager 建立秘密。
若要設定 Active Directory 管理使用者
-
使用具有管理權限的帳戶,登入 Microsoft Azure 入口網站 https://portal.azure.com/
。 -
在搜尋方塊中,輸入 Azure Synapse Analytics,然後選擇 Azure Synapse Analytics。
-
開啟左側的選單。
-
在導覽窗格中,依序選擇 Azure Active Directory。
-
在設定管理員索引標籤上,將 Active Directory 管理員設定為新的或現有的使用者。
-
在 中 AWS Secrets Manager,存放管理員使用者名稱和密碼登入資料。如需有關在 Secrets Manager 中建立祕密的詳細資訊,請參閱建立 AWS Secrets Manager 祕密。
若要檢視 Secrets Manager 中的祕密
前往以下位置開啟機密管理員控制台:https://console.aws.amazon.com/secretsmanager/
。 -
在導覽窗格中,選擇 Secrets (祕密)。
-
在 Secrets (祕密) 頁面中,選擇祕密的連結。
-
在祕密的詳細資訊頁面上,選擇 Retrieve secret value (擷取祕密值)。
修改連線字串
若要啟用連接器的 Active Directory 身分驗證,請使用下列語法修改連線字串:
synapse://jdbc:synapse://hostname:port;databaseName=
database_name
;authentication=ActiveDirectoryPassword;{secret_name}
使用 ActiveDirectoryServicePrincipal
Amazon Athena Azure Synapse 連接器也支援 ActiveDirectoryServicePrincipal
。若要啟用此功能,請依照下列方式修改連線字串。
synapse://jdbc:synapse://hostname:port;databaseName=
database_name
;authentication=ActiveDirectoryServicePrincipal;{secret_name}
對於 secret_name
,指定應用程式或用戶端 ID 做為密碼中服務主體識別的使用者名稱和秘密。
溢出參數
Lambda SDK 可能會將資料溢出至 Amazon S3。由相同 Lambda 函數存取的所有資料庫執行個體溢出到相同的位置。
參數 | 描述 |
---|---|
spill_bucket |
必要。溢出儲存貯體名稱。 |
spill_prefix |
必要。溢出儲存貯體金鑰字首。 |
spill_put_request_headers |
(選用) 用於溢出的 Amazon S3 putObject 請求的請求標頭和值的 JSON 編碼映射 (例如,{"x-amz-server-side-encryption" :
"AES256"} )。如需了解其他可能的標頭,請參閱《Amazon Simple Storage Service API 參考》中的 PutObject。 |
支援的資料類型
下表顯示 Synapse 和 Apache Arrow 的相應資料類型。
Synapse | Arrow |
---|---|
bit | TINYINT |
tinyint | SMALLINT |
smallint | SMALLINT |
int | INT |
bigint | BIGINT |
decimal | DECIMAL |
numeric | FLOAT8 |
smallmoney | FLOAT8 |
money | DECIMAL |
float[24] | FLOAT4 |
float[53] | FLOAT8 |
real | FLOAT4 |
datetime | Date(MILLISECOND) |
datetime2 | Date(MILLISECOND) |
smalldatetime | Date(MILLISECOND) |
date | Date(DAY) |
time | VARCHAR |
datetimeoffset | Date(MILLISECOND) |
char[n] | VARCHAR |
varchar[n/max] | VARCHAR |
nchar[n] | VARCHAR |
nvarchar[n/max] | VARCHAR |
分割區和分隔
分割區由 varchar
類型的單一分割區資料欄表示。Synapse 支援範圍分割,因此透過從 Synapse 中繼資料表中擷取分割區資料欄和分割區範圍來執行分割。這些範圍值用於建立分割。
效能
選取資料欄子集會大幅拖慢查詢執行時間。連接器會顯示因為並行而導致的嚴重限流。
Athena Synapse 連接器執行述詞下推,以減少查詢掃描的資料。簡單述詞和複雜表達式會下推至連接器,以減少掃描的資料量並減少查詢執行時間。
述詞
述詞是 SQL 查詢的 WHERE
子句中的一種表達式,它會評估為布林值,並根據多個條件篩選資料列。Athena Synapse 連接器可以合併這些表達式,並將其直接推送至 Synapse,以增強功能並減少掃描的資料量。
下列 Athena Synapse 連接器運算子支援述詞下推:
-
布林值:AND、OR、NOT
-
等式:EQUAL、NOT_EQUAL、LESS_THAN、LESS_THAN_OR_EQUAL、GREATER_THAN、GREATER_THAN_OR_EQUAL、NULL_IF、IS_NULL
-
算術:ADD、SUBTRACT、MULTIPLY、DIVIDE、MODULUS、NEGATE
-
其他:LIKE_PATTERN、IN
合併下推範例
如需增強的查詢功能,請合併下推類型,如以下範例所示:
SELECT *
FROM my_table
WHERE col_a > 10
AND ((col_a + col_b) > (col_c % col_d))
AND (col_e IN ('val1', 'val2', 'val3') OR col_f LIKE '%pattern%');
傳遞查詢
Synapse 連接器支援傳遞查詢。傳遞查詢使用資料表函數,將您的完整查詢向下推送至資料來源以進行執行。
若要搭配 Synapse 使用傳遞查詢,您可以使用下列語法:
SELECT * FROM TABLE(
system.query(
query => 'query string
'
))
下列範例查詢會將查詢向下推送到 Synapse 中的資料來源。查詢會選取customer
資料表中的所有資料欄,將結果限制為 10。
SELECT * FROM TABLE(
system.query(
query => 'SELECT * FROM customer LIMIT 10'
))
授權資訊
使用此連接器,即表示您確認已包含第三方元件,可在此連接器的 pom.xml
其他資源
-
如需有關如何使用 Amazon QuickSight 和 Amazon Athena Federated Query 對存儲在 Microsoft Azure Synapse 資料庫中的資料建置儀表板和視覺化的文章,請參閱 AWS 大數據部落格中的使用 Amazon QuickSight、Amazon Athena Federated Query 和 Microsoft Azure Synapse 執行多重雲端分析
。 如需最新的 JDBC 驅動程式版本資訊,請參閱 GitHub.com 上 Synapse 連接器的 pom.xml
檔案。 如需此連接器的其他資訊,請造訪 GitHub.com 上的相應網站
。