使用 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_USERNAMEAZDATA_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_USERNAMEAZDATA_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_USERNAMEAZDATA_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 大数据群集 简介