Отправьте команду cURL PUT для программного создания файла в webhdfs на С++ с использованием libcurl

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

Сначала отправьте запрос 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...

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

Примечание. Я могу отправлять запросы 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);
        }

person mintuchiha    schedule 19.03.2015    source источник


Ответы (1)


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

curl -L -i -X ​​PUT -T локальный_файл "http://:50075/webhdfs/v1/?op=CREATE...

person Malathi    schedule 09.07.2015