2016-07-15 61 views
1

我一直無法使用Hadoop的WebHDFS REST API創建文件。使用WebHDFS創建文件時發生RemoteException REST API

按照文檔,我正在這樣做。

curl -i -X PUT "http://hadoop-primarynamenode:50070/webhdfs/v1/tmp/test1234?op=CREATE&overwrite=false" 

響應:

HTTP/1.1 307 TEMPORARY_REDIRECT 
Cache-Control: no-cache 
Expires: Fri, 15 Jul 2016 04:10:13 GMT 
Date: Fri, 15 Jul 2016 04:10:13 GMT 
Pragma: no-cache 
Expires: Fri, 15 Jul 2016 04:10:13 GMT 
Date: Fri, 15 Jul 2016 04:10:13 GMT 
Pragma: no-cache 
Content-Type: application/octet-stream 
Location: http://hadoop-datanode1:50075/webhdfs/v1/tmp/test1234?op=CREATE&namenoderpcaddress=hadoop-primarynamenode:8020&overwrite=false 
Content-Length: 0 
Server: Jetty(6.1.26) 

繼重定向:

curl -i -X PUT -T MYFILE "http://hadoop-datanode1:50075/webhdfs/v1/tmp/test1234?op=CREATE&namenoderpcaddress=hadoop-primarynamenode:8020" 

響應:

HTTP/1.1 100 Continue 

HTTP/1.1 400 Bad Request 
Content-Type: application/json; charset=utf-8 
Content-Length: 162 
Connection: close 

{"RemoteException":{"exception":"IllegalArgumentException","javaClassName":"java.lang.IllegalArgumentException","message":"Failed to parse \"null\" to Boolean."}} 

我無法找到該錯誤消息的任何線索。有誰之前經歷過這個嗎?

我正在運行使用Ambari安裝的Hadoop集羣。

+0

&overwrite = false故意排除? – Shubhangi

+0

覆蓋= false是否存在也是一樣。 – loungerdork

+0

提交HDFS JIRA中的錯誤:https://issues.apache.org/jira/browse/HDFS-10684 – loungerdork

回答

0

看起來像第二個PUT命令需要一個「createparent」參數。事實上,需要「覆蓋」和「創建」。 WebHDFS不使用默認值。肯定是一個bug ...

curl -i -X PUT -T MYFILE "http://hadoop-datanode1:50075/webhdfs/v1/tmp/test1234?op=CREATE&namenoderpcaddress=hadoop-primarynamenode:8020&overwrite=false&createparent=false" 
+0

我不需要添加createparent參數,我試圖用較短的名稱上傳文件,但一旦我確定我係統上的文件名與我在hadoop上創建的文件名一致。 – Hardy