Presto查询HIVE表异常:无法列出目录

时间:2017-07-28 12:37:25

标签: hadoop hive presto

我是Presto的新手。我有两台机器为presto 0.160,一个是协调员,另一个是工人。我想在hive中查询表。现在我可以“显示表格”,“desc tablename”,但是当我想“select * from tablename”时,发生异常:“查询20170728_123013_00011_q4s3a失败:无法列出目录:hdfs:// cdh-test / user / hive /仓库/ employee_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
我错在哪里?

2 个答案:

答案 0 :(得分:0)

存储表的路径需要存在于HDFS上才能使Presto成功打开。从路径看来,你的桌子是一个内部的" hive表,意思是hive应该创建路径本身。由于它没有,你可以使用类似于hdfs dfs -mkdir hdfs://cdh-test/user/hive/warehouse/employee_hive的命令自己创建它,虽然确切的命令取决于你的HDFS设置。

答案 1 :(得分:-1)

您无法访问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表解决了上述问题。