【问题标题】:Presto Query HIVE Table Exception: Failed to list directoryPresto 查询 HIVE 表异常:无法列出目录
【发布时间】:2018-01-04 12:55:38
【问题描述】:

我是 Presto 的新手。我有两台机器用于 presto 0.160,一台是协调器,另一台是工人。我想查询配置单元中的表。现在我可以“显示表”、“desc 表名”,但是当我想“从表名中选择 *”时,出现异常:“查询 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

这是我对 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

我哪里错了?

【问题讨论】:

  • 没有错,可能是暂时的问题...再次运行。

标签: hadoop hive presto


【解决方案1】:

存储表的路径需要存在于 HDFS 上,Presto 才能成功打开它。从路径看来,您的表是一个“内部”配置单元表,这意味着配置单元应该自己创建了路径。由于没有,您可以使用类似于hdfs dfs -mkdir hdfs://cdh-test/user/hive/warehouse/employee_hive 的命令自己创建它,但具体的命令取决于您的 HDFS 设置。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-12
      • 2020-05-14
      • 1970-01-01
      • 1970-01-01
      • 2021-07-27
      • 2017-03-27
      • 2016-05-26
      • 1970-01-01
      相关资源
      最近更新 更多