2015-03-19 2 views
3

Я пытаюсь хранить файлы в HDFS из приложения, написанного на C++. Я знаю, что вы можете использовать локон в командной строке/терминал:Отправить команду cURL PUT для создания файла в webhdfs программно в C++ с использованием libcurl

Первый отправить запрос PUT,

1) curl -i -X PUT http://<name_node>:50070/webhdfs/v1/<path>?op=CREATE 

, а затем записывать данные на узел данных с перепрофилированием адреса,

2) curl -i -X PUT -T <local path> "http://<data_node>:50075/webhdfs/v1/<path>?op=CREATE... 

I хотите знать, как хранить данные в HDFS напрямую, используя libcurl в C++.

Примечание: Я могу посылать запросы GET и все работает отлично:

string url = "http://localhost:50070/webhdfs/v1/mydata/restAPI.txt?op=GETCONTENTSUMMARY"  
if (curl) 
     { 
      curl_easy_setopt(curl, CURLOPT_URL, url1.c_str()); 
      result = curl_easy_perform(curl); 
      curl_easy_cleanup(curl); 
     } 

ответ

1

Лучше использовать локон таким образом, чтобы он автоматически перенаправлять после шага 1. Следующая команда работала в моем случае:

curl -L -i -X ​​PUT -T local_file "http: //: 50075/webhdfs/v1 /? Op = CREATE ...