使用 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}