使用 REST API 对 Azure Data Lake Storage Gen1 进行的文件系统操作
本文介绍如何使用 WebHDFS REST API 和 Data Lake Storage Gen1 REST API 对 Azure Data Lake Storage Gen1 执行文件系统操作。 若要了解如何使用 REST API 对 Data Lake Storage Gen1 执行帐户管理操作,请参阅使用 REST API 对 Data Lake Storage Gen1 进行的帐户管理操作。
先决条件
Azure 订阅。 请参阅获取 Azure 免费试用版。
Azure Data Lake Storage Gen1 帐户。 请遵循通过 Azure 门户开始使用 Azure Data Lake Storage Gen1 中的说明进行操作。
cURL 。 本文使用 cURL 演示如何对 Data Lake Storage Gen1 帐户进行 REST API 调用。
如何实现使用 Microsoft Entra ID 进行身份验证?
可以使用两种方法通过 Microsoft Entra ID 进行身份验证。
- 若要了解应用程序的最终用户身份验证(交互式),请参阅使用 .NET SDK 通过 Data Lake Storage Gen1 进行最终用户身份验证。
- 若要了解应用程序的服务到服务身份验证(非交互式),请参阅使用 .NET SDK 通过 Data Lake Storage Gen1 进行服务到服务身份验证。
创建文件夹
此操作基于 此处定义的 WebHDFS REST API 调用。
使用以下 cURL 命令。 将 <yourstorename>> 替换为 Data Lake Storage Gen1 帐户名。
curl -i -X PUT -H "Authorization: Bearer <REDACTED>" -d "" 'https://<yourstorename>.azuredatalakestore.net/webhdfs/v1/mytempdir/?op=MKDIRS'
在上述命令中,将 <REDACTED
> 替换为前面检索的授权令牌。 此命令在 Data Lake Storage Gen1 帐户的根文件夹下创建名为 mytempdir 的目录。
如果操作成功完成,则会看到类似于以下代码片段的响应:
{"boolean":true}
列出文件夹
此操作基于 此处定义的 WebHDFS REST API 调用。
使用以下 cURL 命令。 将 <yourstorename>> 替换为 Data Lake Storage Gen1 帐户名。
curl -i -X GET -H "Authorization: Bearer <REDACTED>" 'https://<yourstorename>.azuredatalakestore.net/webhdfs/v1/?op=LISTSTATUS'
在上述命令中,将 <REDACTED
> 替换为前面检索的授权令牌。
如果操作成功完成,则会看到类似于以下代码片段的响应:
{
"FileStatuses": {
"FileStatus": [{
"length": 0,
"pathSuffix": "mytempdir",
"type": "DIRECTORY",
"blockSize": 268435456,
"accessTime": 1458324719512,
"modificationTime": 1458324719512,
"replication": 0,
"permission": "777",
"owner": "<GUID>",
"group": "<GUID>"
}]
}
}
上传数据
此操作基于 此处定义的 WebHDFS REST API 调用。
使用以下 cURL 命令。 将 <yourstorename>> 替换为 Data Lake Storage Gen1 帐户名。
curl -i -X PUT -L -T 'C:\temp\list.txt' -H "Authorization: Bearer <REDACTED>" 'https://<yourstorename>.azuredatalakestore.net/webhdfs/v1/mytempdir/list.txt?op=CREATE'
在上述语法中,-T 参数是要上传的文件的位置。
输出与以下代码片段类似:
HTTP/1.1 307 Temporary Redirect
...
Location: https://<yourstorename>.azuredatalakestore.net/webhdfs/v1/mytempdir/list.txt?op=CREATE&write=true
...
Content-Length: 0
HTTP/1.1 100 Continue
HTTP/1.1 201 Created
...
读取数据
此操作基于 此处定义的 WebHDFS REST API 调用。
从 Data Lake Storage Gen1 帐户中读取数据的过程由两个步骤组成。
- 首先,针对终结点
https://<yourstorename>.azuredatalakestore.net/webhdfs/v1/mytempdir/myinputfile.txt?op=OPEN
提交 GET 请求。 此调用返回要将下一个 GET 请求提交到的位置。 - 然后,针对终结点
https://<yourstorename>.azuredatalakestore.net/webhdfs/v1/mytempdir/myinputfile.txt?op=OPEN&read=true
提交 GET 请求。 此调用显示文件的内容。
但是,由于第一和第二个步骤之间的输入参数没有任何差异,因此可以使用 -L
参数来提交第一个请求。
-L
选项本质上是将两个请求合并成一个,让 cURL 对新位置重做请求。 最后会显示所有请求调用的输出,如以下代码片段所示。 将 <yourstorename>> 替换为 Data Lake Storage Gen1 帐户名。
curl -i -L GET -H "Authorization: Bearer <REDACTED>" 'https://<yourstorename>.azuredatalakestore.net/webhdfs/v1/mytempdir/myinputfile.txt?op=OPEN'
应会看到类似于以下代码片段的输出:
HTTP/1.1 307 Temporary Redirect
...
Location: https://<yourstorename>.azuredatalakestore.net/webhdfs/v1/mytempdir/somerandomfile.txt?op=OPEN&read=true
...
HTTP/1.1 200 OK
...
Hello, Data Lake Store user!
重命名文件
此操作基于 此处定义的 WebHDFS REST API 调用。
使用以下 cURL 命令重命名文件。 将 <yourstorename>> 替换为 Data Lake Storage Gen1 帐户名。
curl -i -X PUT -H "Authorization: Bearer <REDACTED>" -d "" 'https://<yourstorename>.azuredatalakestore.net/webhdfs/v1/mytempdir/myinputfile.txt?op=RENAME&destination=/mytempdir/myinputfile1.txt'
应会看到类似于以下代码片段的输出:
HTTP/1.1 200 OK
...
{"boolean":true}
删除文件
此操作基于 此处定义的 WebHDFS REST API 调用。
使用以下 cURL 命令删除文件。 将 <yourstorename>> 替换为 Data Lake Storage Gen1 帐户名。
curl -i -X DELETE -H "Authorization: Bearer <REDACTED>" 'https://<yourstorename>.azuredatalakestore.net/webhdfs/v1/mytempdir/myinputfile1.txt?op=DELETE'
应看到如下输出:
HTTP/1.1 200 OK
...
{"boolean":true}