Исключение таблицы HIVE Presto Query: не удалось перечислить каталог

Я новичок в Престо. У меня есть две машины на presto 0.160, одна координаторская, другая рабочая. Я хочу запросить таблицу в улье. Теперь я могу «показать таблицы», «desc tablename», но когда я хочу «выбрать * из имени таблицы», возникает исключение: «Query 20170728_123013_00011_q4s3a failed: Failed to list directory: hdfs: // cdh-test / user / hive / склад / улей служащего "

presto> desc hive.default.employee_hive;


Column    |  Type   | Comment 
-------------+---------+---------
 eid         | integer |         
 name        | varchar |         
 salary      | varchar |         
 destination | varchar |         
(4 rows)

Query 20170728_123001_00010_q4s3a, FINISHED, 2 nodes
Splits: 2 total, 2 done (100.00%)
0:00 [4 rows, 268B] [40 rows/s, 2.68KB/s]

presto> select * from hive.default.employee_hive;

Query 20170728_123013_00011_q4s3a, FAILED, 1 node
Splits: 1 total, 0 done (0.00%)
0:00 [0 rows, 0B] [0 rows/s, 0B/s]

Query 20170728_123013_00011_q4s3a failed: Failed to list directory: hdfs://cdh-test/user/hive/warehouse/employee_hive

Вот моя конфигурация для каталога ульев:

connector.name=hive-cdh4
hive.metastore.uri=thrift://***:9083
hive.config.resources=/etc/hadoop/conf/core-site.xml,/etc/hadoop/conf/hdfs-site.xml

где я не прав?


person Edison    schedule 28.07.2017    source источник
comment
ничего страшного, это может быть временная проблема ... запустите ее снова.   -  person sandeep rawat    schedule 31.07.2017


Ответы (2)


Путь, по которому хранится таблица, должен существовать в HDFS, чтобы Presto успешно открыла его. Судя по пути, ваша таблица представляет собой «внутреннюю» таблицу-улей, то есть улей должен был создать сам путь. Поскольку это не так, вы можете создать его самостоятельно, используя команду, аналогичную hdfs dfs -mkdir hdfs://cdh-test/user/hive/warehouse/employee_hive, хотя точная команда зависит от вашей настройки HDFS.

person Dave Cameron    schedule 31.07.2017

вы не можете получить доступ к каталогу каталога hadoop. Надеюсь, вы создали таблицу как текстовый файл, и в ней хранится внутренний каталог соответствующего пользователя.

вы просто создаете таблицу как внешнюю таблицу, и вы можете получить доступ через presto

Create External Table tablename (columnames datatypes) row format delimited fields terminated by '\t' stored as textfile;

load data inpath 'Your_hadoop_directory' into table tablename;

иначе вы просто создаете внутреннюю таблицу и загружаете ее во внешнюю таблицу ORC и получаете доступ через presto

Create Table tablename (columnames datatypes) row format delimited fields terminated by '\t' stored as textfile;

load data inpath 'Your_hadoop_directory' into table tablename;

Create external Table tablename (columnames datatypes) STORED AS ORC;

insert into orc_tablename select * from internal_tablename

Я решил вышеуказанную проблему, создав таблицу ORC.

person Sabarish R    schedule 17.04.2020