使用 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
。
构造用于访问 WebHDFS 的 URL
现在,可以按如下方式构造用于访问 WebHDFS 的 URL:
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>
此命令针对要使用的 curl
生成 Kerberos 令牌。 后续部分中演示的命令指定用于 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_USERNAME
和 AZDATA_PASSWORD
。 升级到 CU 5 的群集上的终结点继续使用 root
作为用户名连接到网关终结点。 此更改不适用于使用 Active Directory 身份验证的部署。 请参阅发行说明中的通过网关终结点访问服务所用的凭据。
对于不使用根的终结点,请使用以下 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_USERNAME
和 AZDATA_PASSWORD
。 升级到 CU 5 的群集上的终结点继续使用 root
作为用户名连接到网关终结点。 此更改不适用于使用 Active Directory 身份验证的部署。 请参阅发行说明中的通过网关终结点访问服务所用的凭据。
对于不使用根的终结点,请使用以下 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:///
下创建目录测试,请使用以下命令:
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_USERNAME
和 AZDATA_PASSWORD
。 升级到 CU 5 的群集上的终结点继续使用 root
作为用户名连接到网关终结点。 此更改不适用于使用 Active Directory 身份验证的部署。 请参阅发行说明中的通过网关终结点访问服务所用的凭据。
对于不使用根的终结点,请使用以下 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 大数据群集 简介。