Загрузить файл через CURL в HDFS

Я все еще пытаюсь загрузить файл в HDFS через cURL. Я пробовал это раньше на cURL CLI, и это сработало, но когда я попытался создать PHP-код, выполняющий ту же команду, он не захотел загружать.

Вот команда:

curl -i -X PUT -T "c:/xampp/htdocs/experiment/csv.php" "http://123.123.78.9:14000/webhdfs/v1/user/flume/test2?op=CREATE&buffersize=1024&user.name=flume&blocksize=1048576&overwrite=false&data=true&permission=755" --header "Content-Type: application/octet-stream"

А вот код PHP:

function call_curl($headers, $method, $url, $data)
{
$handle = curl_init();
curl_setopt($handle, CURLOPT_URL, $url);
curl_setopt($handle, CURLOPT_HTTPHEADER, $headers);
curl_setopt($handle, CURLOPT_RETURNTRANSFER, false);
curl_setopt($handle, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($handle, CURLOPT_SSL_VERIFYPEER, false);

switch($method) {
case 'GET':
break;
case 'POST':
curl_setopt($handle, CURLOPT_POST, true);
curl_setopt($handle, CURLOPT_POSTFIELDS, $data);
break;
case 'PUT':
curl_setopt($handle, CURLOPT_CUSTOMREQUEST, 'PUT');
curl_setopt($handle, CURLOPT_POSTFIELDS, $data);
break;
case 'DELETE':
curl_setopt($handle, CURLOPT_CUSTOMREQUEST, 'DELETE');
break;
}

$response = curl_exec($handle);
$code = curl_getinfo($handle, CURLINFO_HTTP_CODE);
curl_close($handle);
return $response;
}

$header = array('Content-Type: application/octet-stream');
$method = "PUT";
$url =  "http://123.123.78.9:14000/webhdfs/v1/user/flume/filter/".$target_file."? op=CREATE&overwrite=true&blocksize=1048576&permission=777&buffersize=1024&user.name=flume";
$data = array('@c:/xampp/htdocs/experiment/'.$target_file);
$call_2 = call_curl($header, $method, $url, $data);

4

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]