本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Amazon Athena Vertica 連接器
Vertica 是一種單欄式資料庫平台,可部署在雲端或進行內部部署,以支援 Exabyte 艾位元組規模的資料倉儲。您可以在聯合查詢中使用 Amazon Athena Vertica 連接器,查詢來自 Athena 的 Vertica 資料來源。例如,您可以在 Vertica 上的資料倉儲和 Simple Storage Service (Amazon S3) 中的資料湖上執行分析查詢。
此連接器不會使用 Glue Connections 來集中 Glue 中的組態屬性。連線組態是透過 Lambda 完成。
必要條件
使用 Athena 主控台或 AWS Serverless Application Repository,將連接器部署到您的 AWS 帳戶 。如需詳細資訊,請參閱 建立資料來源連線 或 使用 AWS Serverless Application Repository 部署資料來源連接器。
使用此連接器之前,請設定 VPC和安全群組。如需詳細資訊,請參閱VPC 為資料來源連接器或 AWS Glue 連線建立。
限制
-
由於 Athena Vertica 連接器會從 Amazon S3 讀取匯出的 Parquet 檔案,因此連接器的效能可能會很慢。當您查詢大型資料表時,我們建議您使用 CREATE TABLE AS (SELECT ...) 查詢和SQL述詞。
-
目前,由於 Athena Federated Query 中存在已知問題,連接器會讓 Vertica 將已查詢資料表的所有資料欄匯出至 Amazon S3,但在 Athena 主控台的結果中只能看到已查詢的資料欄。
-
不支援寫入DDL操作。
-
任何相關的 Lambda 限制。如需詳細資訊,請參閱《AWS Lambda 開發人員指南》中的 Lambda 配額。
工作流程
下圖顯示使用 Vertica 連接器的查詢工作流程。

-
針對 Vertica 中的一或多個資料表發出SQL查詢。
-
連接器會剖析SQL查詢,以透過JDBC連線將相關部分傳送至 Vertica。
-
連線字串使用存放在 中的使用者名稱和密碼 AWS Secrets Manager 來存取 Vertica。
-
連接器使用 Vertica
EXPORT
命令包裝SQL查詢,如下列範例所示。EXPORT TO PARQUET (directory = 's3://amzn-s3-demo-bucket/
folder_name
, Compression='Snappy', fileSizeMB=64) OVER() as SELECT PATH_ID, ... SOURCE_ITEMIZED, SOURCE_OVERRIDE FROM DELETED_OBJECT_SCHEMA.FORM_USAGE_DATA WHERE PATH_ID <= 5; -
Vertica 會處理SQL查詢,並將結果集傳送到 Amazon S3 儲存貯體。為了獲得更好的輸送量,Vertica 使用
EXPORT
選項來平行處理多個 Parquet 檔案的寫入操作。 -
Athena 會掃描 Amazon S3 儲存貯體,以確定要為結果集讀取的檔案數。
-
Athena 對 Lambda 函數進行多次呼叫,並使用 Apache 從產生的資料集
ArrowReader
讀取 Parquet 檔案。多個呼叫可讓 Athena 平行讀取 Amazon S3 檔案,並達到每秒高達 100GB 的輸送量。 -
Athena 會使用從資料湖掃描的資料來處理從 Vertica 傳回的資料,並傳回結果。
條款
下列術語與 Vertica 連接器相關。
-
資料庫執行個體 – Amazon 上部署的 Vertica 資料庫的任何執行個體EC2。
-
處理常式 - 存取資料庫執行個體的 Lambda 處理常式。處理常式可以用於中繼資料或資料記錄。
-
中繼資料處理常式 - 從資料庫執行個體中擷取中繼資料的 Lambda 處理常式。
-
記錄處理常式 - 從資料庫執行個體中擷取資料記錄的 Lambda 處理常式。
-
複合處理常式 - 從資料庫執行個體中擷取中繼資料和資料記錄的 Lambda 處理常式。
-
屬性或參數 - 處理常式用來擷取資料庫資訊的資料庫屬性。您可以將這些屬性設定為 Lambda 環境變數。
-
連接字串 - 用來建立資料庫執行個體連線的文字字串。
-
目錄 – 向 Athena 註冊的非AWS Glue 目錄,是
connection_string
屬性的必要字首。
參數
Amazon Athena Vertica 連接器透過 Lambda 環境變數公開組態選項。您可以使用下列 Lambda 環境變數來設定連接器。
-
AthenaCatalogName – Lambda 函數名稱
-
ExportBucket – 匯出 Vertica 查詢結果的 Amazon S3 儲存貯體。
-
SpillBucket – 此函數可能溢出資料的 Amazon S3 儲存貯體名稱。
-
SpillPrefix – 此函數可能溢出資料
SpillBucket
的位置字首。 -
SecurityGroupIds – 一或多個IDs對應至應套用至 Lambda 函數的安全群組 (例如
sg1
、sg2
或sg3
)。 -
SubnetIds – 一或多個子網路IDs,對應至 Lambda 函數可用來存取資料來源的子網路 (例如
subnet1
或subnet2
)。 -
SecretNameOrPrefix – 此函數可存取的 Secrets Manager 中一組名稱的名稱或字首 (例如
vertica-*
) -
VerticaConnectionString – 如果未定義目錄特定連線,則預設要使用的 Vertica 連線詳細資訊。字串可以選擇性地使用語法 AWS Secrets Manager (例如
${secret_name}
)。 -
VPC ID – 要連接到 Lambda 函數的 VPC ID。
連接字串
使用下列格式的JDBC連線字串來連線至資料庫執行個體。
vertica://jdbc:vertica://
host_name
:port
/database
?user=vertica-username
&password=vertica-password
使用單一連接處理常式
您可以使用下列單一連接中繼資料和記錄處理常式來連接至單一 Vertica 執行個體。
處理常式類型 | 類別 |
---|---|
複合處理常式 | VerticaCompositeHandler |
中繼資料處理常式 | VerticaMetadataHandler |
記錄處理常式 | VerticaRecordHandler |
單一連接處理常式參數
參數 | 描述 |
---|---|
default |
必要。預設的連接字串。 |
單一連接處理常式支援一個資料庫執行個體,並且必須提供 default
連接字串參數。忽略所有其他連接字串。
提供憑證
若要為JDBC連線字串中的資料庫提供使用者名稱和密碼,您可以使用連線字串屬性 或 AWS Secrets Manager。
-
連線字串 – 使用者名稱和密碼可以指定為JDBC連線字串中的屬性。
重要
作為安全最佳實務,請勿在您的環境變數或連線字串中使用硬式編碼憑證。如需將硬式編碼秘密移至 的資訊 AWS Secrets Manager,請參閱AWS Secrets Manager 《 使用者指南》中的將硬式編碼秘密移至 AWS Secrets Manager 。
-
AWS Secrets Manager – 若要搭配 Athena 聯合查詢功能使用 AWS Secrets Manager,VPC連接至 Lambda 函數的 應具有網際網路存取
或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}"}
帶有秘密名稱的連接字串範例
以下字串具有秘密名稱 ${vertica-username
} 和 ${vertica-password}
。
vertica://jdbc:vertica://
host_name
:port
/database
?user=${vertica-username}&password=${vertica-password}
連接器會使用秘密名稱來擷取秘密並提供使用者名稱和密碼,如下列範例所示。
vertica://jdbc:vertica://
host_name
:port
/database
?user=sample-user&password=sample-password
目前,Vertica 連接器可識別 vertica-username
和 vertica-password
JDBC 屬性。
溢出參數
Lambda SDK可以將資料溢出到 Amazon S3。由相同 Lambda 函數存取的所有資料庫執行個體溢出到相同的位置。
參數 | 描述 |
---|---|
spill_bucket |
必要。溢出儲存貯體名稱。 |
spill_prefix |
必要。溢出儲存貯體金鑰字首。 |
spill_put_request_headers |
(選用) JSON 用於溢出的 Amazon S3 putObject 請求的請求標頭和值編碼映射 (例如 {"x-amz-server-side-encryption" : "AES256"} )。如需其他可能的標頭,請參閱《Amazon Simple Storage Service API參考PutObject》中的 。 |
支援的資料類型
下表顯示 Vertica 連接器支援的資料類型。
Boolean |
---|
BigInt |
Short |
Integer |
Long |
Float |
Double |
日期 |
Varchar |
位元組 |
BigDecimal |
TimeStamp 作為 Varchar |
效能
Lambda 函數執行投影下推,以減少查詢掃描的資料。LIMIT
子句可減少掃描的資料量,但是如果未提供述詞,則應預期含有 LIMIT
子句的 SELECT
查詢可掃描至少 16 MB 的資料。Vertica 連接器由於並行而對限流保有彈性。
傳遞查詢
Vertica 連接器支援傳遞查詢。傳遞查詢使用資料表函數,將您的完整查詢向下推送至資料來源以進行執行。
若要搭配 Vertica 使用傳遞查詢,您可以使用下列語法:
SELECT * FROM TABLE( system.query( query => '
query string
' ))
下列範例查詢會將查詢向下推送至 Vertica 中的資料來源。查詢會選取customer
資料表中的所有資料欄,將結果限制為 10。
SELECT * FROM TABLE( system.query( query => 'SELECT * FROM customer LIMIT 10' ))
授權資訊
使用此連接器,即表示您確認包含第三方元件,該元件的清單可在此連接器的 pom.xml
其他資源
如需最新的JDBC驅動程式版本資訊,請參閱 上 Vertica 連接器的 pom.xml
如需此連接器的詳細資訊,請參閱 中的對應網站