Загрузка данных в таблицу Hive из HDFS в Cloudera VM

При использовании Cloudera VM вы можете получить доступ к информации в HDFS? Я знаю, что нет прямого пути к HDFS, но я также не вижу, как динамически обращаться к нему.

После создания таблицы Hive через CLI Hive я попытался загрузить некоторые данные из файла, расположенного в HDFS:

load data inpath '/test/student.txt' into table student;

Но тогда я просто получаю эту ошибку:

FAILED: SemanticException Line 1:17 Invalid path ''/test/student.txt'': No files matching path hdfs://quickstart.cloudera:8020/test/student.txt

Я также попытался просто загружать данные не в HDFS в таблицу улей, например:

load data inpath '/home/cloudera/Desktop/student.txt' into table student;

Однако это только что вызвало эту ошибку:

FAILED: SemanticException Line 1:17 Invalid path ''/home/cloudera/Desktop/student.txt'': No files matching path hdfs://quickstart.cloudera:8020/home/cloudera/Desktop/student.txt

Еще раз я вижу, что он пытается получить доступ к данным с корнем hdfs://quickstart.cloudera:8020 и я не уверен, что это такое, но он, похоже, не является корневым каталогом для HDFS.

Я не уверен, что я делаю неправильно, но я убедился, что файл находится в HDFS, поэтому я не знаю, почему эта ошибка подходит или как ее исправить.

1 ответ

как вы можете получить доступ к информации в HDFS

Ну, вам, конечно, не нужно использовать Hive для этого. hdfs dfs - это то, как вы взаимодействуете с HDFS.

Я не уверен, что это такое, но, похоже, он не является корневым каталогом для HDFS

Это корень HDFS. quickstart.cloudera - имя хоста виртуальной машины. Порт 8020 - порт HDFS.

Исключение составляют различия в использовании ключевого слова LOCAL.

Что ты делаешь

LOAD DATA INPATH

VS, что вы, кажется, хотите

LOAD DATA LOCAL INPATH

Или, если файлы находятся в HDFS, неясно, как вы поместили в него файлы, но у HDFS определенно нет/home-папки или рабочего стола, поэтому вторая ошибка, по крайней мере, имеет смысл.

В любом случае, hdfs dfs -put/test/students.text/test/ - один из способов загрузить ваш файл, предполагая, что hdfs:///test папка hdfs:///test уже существует. В противном случае hdfs dfs -put/test/students.text/test переименовывает ваш файл в /test на HDFS

Примечание. Вы можете создать EXTERNAL TABLE в каталоге HDFS, вам не нужно использовать команду LOAD DATA.

licensed under cc by-sa 3.0 with attribution.