分享方式:


使用 curl 將資料載入 SQL Server 巨量資料叢集上的 HDFS

適用於:SQL Server 2019 (15.x)

本文說明如何使用 curl 將資料載入 SQL Server 2019 巨量資料叢集上的 HDFS。

重要

Microsoft SQL Server 2019 巨量資料叢集附加元件將會淘汰。 SQL Server 2019 巨量資料叢集的支援將於 2025 年 2 月 28 日結束。 平台上將完全支援含軟體保證 SQL Server 2019 的所有現有使用者,而且軟體將會持續透過 SQL Server 累積更新來維護,直到該時間為止。 如需詳細資訊,請參閱公告部落格文章Microsoft SQL Server 平台上的巨量資料選項

必要條件

取得服務外部 IP

當部署完成時會啟動 WebHDFS,並透過 Knox 進行存取。 Knox 端點是透過名為 gateway-svc-external 的 Kubernetes 服務公開。 若要建立必要的 WebHDFS URL 來上傳/下載檔案,您需要 gateway-svc-external 服務外部 IP 位址和巨量資料叢集的名稱。 您可以執行下列命令,取得 gateway-svc-external 服務外部 IP 位址:

kubectl get service gateway-svc-external -n <big data cluster name> -o json | jq -r .status.loadBalancer.ingress[0].ip

注意

這裡的 <big data cluster name> 是您在部署組態檔中指定的叢集名稱。 預設名稱為 mssql-cluster

建構 URL 來存取 WebHDFS

現在,您可以建構 URL 來存取 WebHDFS,如下所示:

https://<gateway-svc-external service external IP address>:30443/gateway/default/webhdfs/v1/

例如:

https://13.66.190.205:30443/gateway/default/webhdfs/v1/

使用 Active Directory 驗證

針對使用 Active Directory 的部署,請使用具有 curl 的驗證參數來配合交涉驗證。

若要使用 curl 搭配 Active Directory 驗證,請執行此命令:

kinit <username>

命令會產生 Kerberos 權杖供 curl 使用。 下節示範的命令會指定 curl--anyauth 參數。 對於需要交涉驗證的 URL,curl 會自動偵測並使用產生的 Kerberos 權杖向 URL 驗證,而不是使用者名稱和密碼。

列出檔案

若要列出 hdfs:///product_review_data 底下的檔案,請使用下列 curl 命令:

curl -i -k --anyauth -u root:<AZDATA_PASSWORD> -X GET 'https://<gateway-svc-external IP external address>:30443/gateway/default/webhdfs/v1/product_review_data/?op=liststatus'

從 SQL Server 2019 (15.x) CU 5 開始,當您使用基本驗證部署新的叢集時,所有端點 (包括閘道) 都會使用 AZDATA_USERNAMEAZDATA_PASSWORD。 升級至 CU 5 的叢集上的端點會繼續使用 root 作為使用者名稱,以連線至閘道端點。 這項變更不適用於使用 Active Directory 驗證的部署。 請參閱版本資訊中的透過閘道端點存取服務的認證

針對不是使用 root 的端點,請使用下列 curl 命令:

curl -i -k --anyauth -u <AZDATA_USERNAME>:<AZDATA_PASSWORD> -X GET 'https://<gateway-svc-external IP external address>:30443/gateway/default/webhdfs/v1/product_review_data/?op=liststatus'

將本機檔案放入 HDFS

若要將新檔案 test.csv 從本機目錄放到 product_review_data 目錄,請使用下列 curl 命令 (Content-Type 是必要參數):

curl -i -L -k --anyauth -u root:<AZDATA_PASSWORD> -X PUT 'https://<gateway-svc-external IP external address>:30443/gateway/default/webhdfs/v1/product_review_data/test.csv?op=create' -H 'Content-Type: application/octet-stream' -T 'test.csv'

從 SQL Server 2019 (15.x) CU 5 開始,當您使用基本驗證部署新的叢集時,所有端點 (包括閘道) 都會使用 AZDATA_USERNAMEAZDATA_PASSWORD。 升級至 CU 5 的叢集上的端點會繼續使用 root 作為使用者名稱,以連線至閘道端點。 這項變更不適用於使用 Active Directory 驗證的部署。 請參閱版本資訊中的透過閘道端點存取服務的認證

針對不是使用 root 的端點,請使用下列 curl 命令:

curl -i -L -k --anyauth -u <AZDATA_USERNAME>:<AZDATA_PASSWORD> -X PUT 'https://<gateway-svc-external IP external address>:30443/gateway/default/webhdfs/v1/product_review_data/test.csv?op=create' -H 'Content-Type: application/octet-stream' -T 'test.csv'

建立目錄

若要在 hdfs:/// 下建立目錄 test,請使用下列命令:

curl -i -L -k --anyauth -u root:<AZDATA_PASSWORD> -X PUT 'https://<gateway-svc-external IP external address>:30443/gateway/default/webhdfs/v1/test?op=MKDIRS'

從 SQL Server 2019 (15.x) CU 5 開始,當您使用基本驗證部署新的叢集時,所有端點 (包括閘道) 都會使用 AZDATA_USERNAMEAZDATA_PASSWORD。 升級至 CU 5 的叢集上的端點會繼續使用 root 作為使用者名稱,以連線至閘道端點。 這項變更不適用於使用 Active Directory 驗證的部署。 請參閱版本資訊中的透過閘道端點存取服務的認證

針對不是使用 root 的端點,請使用下列 curl 命令:

curl -i -L -k --anyauth -u <AZDATA_USERNAME>:<AZDATA_PASSWORD> -X PUT 'https://<gateway-svc-external IP external address>:30443/gateway/default/webhdfs/v1/test?op=MKDIRS'

後續步驟

如需詳細資訊,請參閱 SQL Server 巨量資料叢集簡介