Condividi tramite


Usare curl per caricare dati in HDFS nei cluster Big Data di SQL Server

Si applica a: SQL Server 2019 (15.x)

Questo articolo descrive come usare curl per caricare dati in HDFS nei cluster Big Data di SQL Server 2019.

Importante

Il componente aggiuntivo per i cluster Big Data di Microsoft SQL Server 2019 verrà ritirato. Il supporto per i cluster Big Data di SQL Server 2019 terminerà il 28 febbraio 2025. Tutti gli utenti esistenti di SQL Server 2019 con Software Assurance saranno completamente supportati nella piattaforma e fino a quel momento il software continuerà a ricevere aggiornamenti cumulativi di SQL Server. Per altre informazioni, vedere il post di blog relativo all'annuncio e Opzioni per i Big Data nella piattaforma Microsoft SQL Server.

Prerequisiti

Ottenere l'indirizzo IP esterno del servizio

Al termine della distribuzione viene avviato WebHDFS, a cui è possibile accedere attraverso Knox. L'endpoint Knox viene esposto tramite un servizio Kubernetes denominato gateway-svc-external. Per creare l'URL WebHDFS necessario per caricare/scaricare i file, sono necessari l'indirizzo IP esterno del servizio gateway-svc-external e il nome del cluster Big Data. È possibile ottenere l'indirizzo IP esterno del servizio gateway-svc-external eseguendo il comando seguente:

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

Nota

<big data cluster name> è il nome del cluster specificato nel file di configurazione della distribuzione. Il nome predefinito è mssql-cluster.

Costruire l'URL per accedere a WebHDFS

A questo punto, è possibile costruire l'URL per accedere a WebHDFS, come indicato di seguito:

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

Ad esempio:

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

Autenticazione con Active Directory

Per le distribuzioni con Active Directory, usare il parametro di autenticazione con curl e l'autenticazione Negotiate.

Per usare curl con l'autenticazione di Active Directory, eseguire questo comando:

kinit <username>

Il comando genera un token Kerberos per l'uso con curl. I comandi illustrati nelle sezioni seguenti specificano il parametro --anyauth per curl. Per gli URL che richiedono l'autenticazione Negotiate, curl rileva automaticamente e usa il token Kerberos generato anziché il nome utente e la password per l'autenticazione agli URL.

Elencare un file

Per elencare il file in hdfs:///product_review_data, usare il comando curl seguente:

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'

A partire da SQL Server 2019 (15.x) CU 5, quando si distribuisce un nuovo cluster con l'autenticazione di base, tutti gli endpoint, incluso il gateway, usano AZDATA_USERNAME e AZDATA_PASSWORD. Gli endpoint nei cluster aggiornati a CU5 continuano a usare root come nome utente per la connessione all'endpoint del gateway. Questa modifica non si applica alle distribuzioni che usano l'autenticazione Active Directory. Vedere Credenziali per l'accesso ai servizi tramite l'endpoint del gateway nelle note sulla versione.

Per gli endpoint che non usano la radice, usare il comando curl seguente:

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'

Inserire un file locale in HDFS

Per inserire un nuovo file test. csv dalla directory locale alla directory product_review_data, usare il comando curl seguente (è necessario il parametro 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'

A partire da SQL Server 2019 (15.x) CU 5, quando si distribuisce un nuovo cluster con l'autenticazione di base, tutti gli endpoint, incluso il gateway, usano AZDATA_USERNAME e AZDATA_PASSWORD. Gli endpoint nei cluster aggiornati a CU5 continuano a usare root come nome utente per la connessione all'endpoint del gateway. Questa modifica non si applica alle distribuzioni che usano l'autenticazione Active Directory. Vedere Credenziali per l'accesso ai servizi tramite l'endpoint del gateway nelle note sulla versione.

Per gli endpoint che non usano la radice, usare il comando curl seguente:

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'

Creare una directory

Per creare un tes di directory in hdfs:///, usare il comando seguente:

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'

A partire da SQL Server 2019 (15.x) CU 5, quando si distribuisce un nuovo cluster con l'autenticazione di base, tutti gli endpoint, incluso il gateway, usano AZDATA_USERNAME e AZDATA_PASSWORD. Gli endpoint nei cluster aggiornati a CU5 continuano a usare root come nome utente per la connessione all'endpoint del gateway. Questa modifica non si applica alle distribuzioni che usano l'autenticazione Active Directory. Vedere Credenziali per l'accesso ai servizi tramite l'endpoint del gateway nelle note sulla versione.

Per gli endpoint che non usano la radice, usare il comando curl seguente:

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'

Passaggi successivi

Per altre informazioni, vedere Introduzione ai cluster Big Data di SQL Server.