我正在尝试使用C#应用程序从Hadoop集群上传/下载文件,但我找不到上传和下载文档的API。
那么请告诉我如何使用RestAPI从Hadoop上传和下载文件?
由于
答案 0 :(得分:1)
您可以使用此处所述的WebHDFS REST API http://hadoop.apache.org/docs/r1.0.4/webhdfs.html
修改强>
创建并写入文件
第1步:
提交HTTP PUT请求,而不会自动关注重定向,也不会发送文件数据。
curl -i -X PUT“http://:/ webhdfs / v1 /?op = CREATE [&安培;重写=] [&安培;块大小=] [&安培;复制=] [&安培;权限=] [&安培; BUFFERSIZE =]“。
请求被重定向到要写入文件数据的datanode: HTTP / 1.1 307 TEMPORARY_REDIRECT 位置:http://:/ webhdfs / v1 /?op = CREATE ... 内容长度:0
第2步:
使用Location标头中的URL和要写入的文件数据提交另一个HTTP PUT请求。
curl -i -X PUT -T 的 “http://:/?webhdfs / V1 / OP = CREATE ...”
客户端收到内容长度为零的201 Created响应和Location头中文件的WebHDFS URI: HTTP / 1.1 201已创建 位置:webhdfs://:/ 内容长度:0
请注意,创建/追加两步的原因是为了防止客户端在重定向之前发送数据。 HTTP / 1.1中的“Expect:100-continue”标头解决了此问题;请参阅RFC 2616,第8.2.3节。不幸的是,有软件库错误(例如Jetty 6 HTTP服务器和Java 6 HTTP客户端),它们没有正确实现“Expect:100-continue”。两步创建/追加是软件库错误的临时解决方法。