使用 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 进行的帐户管理操作

先决条件

如何实现使用 Microsoft Entra ID 进行身份验证?

可以使用两种方法通过 Microsoft Entra ID 进行身份验证。

创建文件夹

此操作基于 此处定义的 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}

后续步骤

另请参阅