2016-08-31 9 views
0

Я пытаюсь создать плагин для хранения Hadoop (hdfs) и сверла Apache. На самом деле я в замешательстве, и я не знаю, что установить в качестве порта для hdfs: // connection и что установить для местоположения. Это мой плагин:Создание плагина для хранения на Apache Drill для HDFS

{ 
"type": "file", 
"enabled": true, 
"connection": "hdfs://localhost:54310", 
"workspaces": { 
"root": { 
    "location": "/", 
    "writable": false, 
    "defaultInputFormat": null 
}, 
"tmp": { 
    "location": "/tmp", 
    "writable": true, 
    "defaultInputFormat": null 
} 
}, 
"formats": { 
    "psv": { 
    "type": "text", 
    "extensions": [ 
    "tbl" 
    ], 
    "delimiter": "|" 
}, 
"csv": { 
    "type": "text", 
    "extensions": [ 
    "csv" 
    ], 
    "delimiter": "," 
}, 
"tsv": { 
    "type": "text", 
    "extensions": [ 
    "tsv" 
    ], 
    "delimiter": "\t" 
}, 
"parquet": { 
    "type": "parquet" 
}, 
"json": { 
    "type": "json" 
}, 
"avro": { 
    "type": "avro" 
    } 
} 
} 

Итак, ти правильно установить LOCALHOST: 54310 потому, что я получил, что с помощью команды:

hdfs -getconf -nnRpcAddresses 

или оно: 8020?

Второй вопрос, что мне нужно для определения местоположения? Моя папка Hadoop находится в:

/usr/local/hadoop 

, и там вы можете найти/и т.д./bin/Lib/войти ... Так что, мне нужно установить местоположение на моем DataNode, или?

Третий вопрос. Когда я подключение к Дрели, я иду через sqlline и чем подключение на моем, как зоопарк:

!connect jdbc:drill:zk=localhost:2181 

Мой вопроса здесь, после того, как я делаю плагин для хранения и при подключении к Дрели с гк, я могу запросить файл hdfs?

Мне очень жаль, если это вопрос о нобе, но я не нашел ничего полезного в интернете или, по крайней мере, это мне не помогло. Если вы в состоянии объяснить мне некоторые вещи, я буду очень благодарен.

ответ

2

По Drill docs,

{ 
    "type" : "file", 
    "enabled" : true, 
    "connection" : "hdfs://10.10.30.156:8020/", 
    "workspaces" : { 
     "root" : { 
     "location" : "/user/root/drill", 
     "writable" : true, 
     "defaultInputFormat" : null 
     } 
    }, 
    "formats" : { 
     "json" : { 
     "type" : "json" 
     } 
    } 
    } 

В "connection",

положить адрес NameNode сервера.

Если вы не уверены в этом адресе. Проверьте fs.default.name или fs.defaultFS объектов недвижимости в core-site.xml.

Приходя к "workspaces",

вы можете сэкономить рабочее пространство в этом. В приведенном выше примере есть workspace с именем root и адресом /user/root/drill. Это ваше местоположение HDFS.

Если у вас есть файлы под каталогом /user/root/drill hdfs, вы можете запросить их, используя это имя рабочей области.

Пример: abc находится в этом каталоге.

select * from dfs.root.`abc.csv` 

После успешного создания плагина, вы можете начать тренировку и начать запрос.

Вы можете запросить любой каталог независимо от рабочих областей.

Скажите, что вы хотите задать employee.json в каталоге /tmp/data hdfs.

Запрос является:

select * from dfs.`/tmp/data/employee.json` 
+0

Хм, тем временем я создал многоузловой кластер hadoop. Но я все еще не могу запросить папку hdfs. Я проверил свой * core-site.xml * и в связях: 'hdfs: // hasoop-master: 9000'. Я пошел в плагин apache drill * dfs * и в * соединении * написал точно такую ​​же строку. Также я сделал папку в hdfs и назвал его ** паркет **. Когда я пытаюсь выполнить запрос из drill, это мой запрос: 'SELECT * FROM dfs. '/ Parquet/file.parquet';' и я получаю эту ошибку: * Ошибка запроса: ошибка PARSE: из строки 1 , столбец 21 - строка 1, столбец 23: таблица «dfs./file.parquet» не найдена [wq9u34jnj1223 на hadoop-master: 31010] –

+0

@Superbrain_bug проверить последнюю строку моего ответа. Его 'символ не одинарной кавычки (') Теперь попробуйте:' '' SELECT * FROM dfs.'/паркет/файл.паркет'; '' ' –

+0

Да, я использую его, я пропустил набранный текст, я вялый Кроме того, когда я пытаюсь использовать 'SHOW FILES' с конфигурацией hdfs: //, у меня есть такая ошибка: ** Ошибка завершена: System Error: Ошибка при обработке SQL. ** Но я могу переключать схемы. –

0

У меня аналогичная проблема, Дрель не может прочитать сервер ДХ. Наконец, проблема связана с портом namenode. Адрес по умолчанию для пользовательского интерфейса namenode: http://localhost:50070/.

Адрес по умолчанию для почтового сервера - hdfs: // localhost: 8020 /.