【大数据学习--hive】hive中执行select * from tablename 报错问题。

在虚拟机中搭建hive之后,创建了表,在执行select * from tablename的时候报错,具体报错信息如下:

hive> select * from hive_01;
FAILED: SemanticException Unable to determine if hdfs://master:9000/user/hive/warehouse/hive_1.db/hive_01 is encrypted: java.lang.IllegalArgumentException: java.net.UnknownHostException: master

报错的大致意思是:hive_1库被锁,后面的提示是未知的主机名:master;根据报错提示:说明创建hive_1库的时候默认保存路径是

hdfs://master:9000/user/hive/warehouse/hive_1.db/hive_01,但是实际上现在找不到这个路径,即:未知的主机名:master,这才像想起来namenode之前设置的主机名为master,后来改了主机名为namenode,由于hive的元数据已经设置保存在mysql中,因此需要修改mysql中记录的默认路径即可,此处主要修改两张表,分别如下:
mysql> select * from DBS;
+-------+-----------------------+--------------------------------------------------+---------+------------+------------+-----------+
| DB_ID | DESC                  | DB_LOCATION_URI                                  | NAME    | OWNER_NAME | OWNER_TYPE | CTLG_NAME |
+-------+-----------------------+--------------------------------------------------+---------+------------+------------+-----------+
|     1 | Default Hive database | hdfs://master:9000/user/hive/warehouse           | default | public     | ROLE       | hive      |
|     2 | NULL                  | hdfs://master:9000/user/hive/warehouse/hive_1.db | hive_1  | root       | USER       | hive      |
+-------+-----------------------+--------------------------------------------------+---------+------------+------------+-----------+
mysql> select * from SDS;
+-------+-------+------------------------------------------+---------------+---------------------------+----------------------------------------------------------+-------------+------------------------------------------------------------+----------+
| SD_ID | CD_ID | INPUT_FORMAT                             | IS_COMPRESSED | IS_STOREDASSUBDIRECTORIES | LOCATION                                                 | NUM_BUCKETS | OUTPUT_FORMAT                                              | SERDE_ID |
+-------+-------+------------------------------------------+---------------+---------------------------+----------------------------------------------------------+-------------+------------------------------------------------------------+----------+
|     1 |     1 | org.apache.hadoop.mapred.TextInputFormat |               |                           | hdfs://master:9000/user/hive/warehouse/hive_1.db/hive_01 |          -1 | org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat |        1 |
+-------+-------+------------------------------------------+---------------+---------------------------+----------------------------------------------------------+-------------+------------------------------------------------------------+----------+
1 row in set (0.00 sec)

修改DBS表的DB_LOCATION_URI 的值

mysql> update DBS set DB_LOCATION_URI=REPLACE(‘DB_LOCATION_URI‘,‘hdfs://master:9000/user/hive/warehouse‘,‘hdfs://namenode:9000/user/hive/warehouse‘)
    -> ;
Query OK, 2 rows affected (0.05 sec)
Rows matched: 2  Changed: 2  Warnings: 0

mysql> select * from DBS;   +-------+-----------------------+-----------------+---------+------------+------------+-----------+
| DB_ID | DESC                  | DB_LOCATION_URI | NAME    | OWNER_NAME | OWNER_TYPE | CTLG_NAME |
+-------+-----------------------+-----------------+---------+------------+------------+-----------+
|     1 | Default Hive database | DB_LOCATION_URI | default | public     | ROLE       | hive      |
|     2 | NULL                  | DB_LOCATION_URI | hive_1  | root       | USER       | hive      |
+-------+-----------------------+-----------------+---------+------------+------------+-----------+
2 rows in set (0.00 sec)

修改SDS表中LOCATION字段的值

mysql> update SDS set LOCATION=REPLACE(LOCATION,‘hdfs://master:9000/user/hive/warehouse/hive_1.db/hive_01‘,‘hdfs://namenode:9000/user/hive/warehouse/hive_1.db/hive_01‘);
Query OK, 1 row affected (0.08 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> select * from SDS;    

+-------+-------+------------------------------------------+---------------+---------------------------+------------------------------------------------------------+-------------+------------------------------------------------------------+----------+
| SD_ID | CD_ID | INPUT_FORMAT                             | IS_COMPRESSED | IS_STOREDASSUBDIRECTORIES | LOCATION                                                   | NUM_BUCKETS | OUTPUT_FORMAT                                              | SERDE_ID |
+-------+-------+------------------------------------------+---------------+---------------------------+------------------------------------------------------------+-------------+------------------------------------------------------------+----------+
|     1 |     1 | org.apache.hadoop.mapred.TextInputFormat |               |                           | hdfs://namenode:9000/user/hive/warehouse/hive_1.db/hive_01 |          -1 | org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat |        1 |
+-------+-------+------------------------------------------+---------------+---------------------------+------------------------------------------------------------+-------------+------------------------------------------------------------+----------+
1 row in set (0.01 sec)

修改完毕,重启mysql服务后,在hive中执行查询操作:

hive> select * from hive_01;
OK
Time taken: 2.329 seconds
hive> 

OK......一切正常。

此例可适用于修改了HDFS默认端口,主机名等情况。

原文地址:https://www.cnblogs.com/kylinku/p/12129540.html

时间: 2024-11-08 17:02:13

【大数据学习--hive】hive中执行select * from tablename 报错问题。的相关文章

好程序员大数据学习路线hive内部函数

好程序员大数据学习路线hive内部函数,持续为大家更新了大数据学习路线,希望对正在学习大数据的小伙伴有所帮助.1.取随机数函数:rand()语法: rand(),rand(int seed) 返回值: double 说明: 返回一个0到1范围内的随机数.如果指定seed,则会得到一个稳定的随机数序列select rand();select rand(10);2.分割字符串函数:split(str,splitor) 语法: split(string str, string pat) 返回值: ar

大数据学习:hive篇,入门学习大数据开发

大数据开发之路漫漫其修远兮,吾将上下而求索.对于很多入门学习大数据开发的小伙伴,可能第一个接触到的,是我们的大数据领域的数据仓库工具hive.在大数据生态中,hive一般作为数据仓库来使用. Hive本身是不做数据存储的,它是构建在分布式存储系统HDFS之上,我们平常看到的表数据其实本质上来说还是HDFS的文件. Hive把这些HDFS数据文件,通过元数据规则映射为数据库的表,并且可以提供SQL操作的功能.Hive总体结构比较简单,总体有三个组件:用户接口.元数据系统.驱动器.用户通过用户接口来

CentOS8中执行mysqladmin重置密码报错问题

报错现象: connect to server at 'localhost' failed error: 'Access denied for user 'root'@'localhost' (using password: YES)' 解决方案: 1,执行/etc/init.d/mysqld stop停止mysql服务 2,新开一个终端执行:mysqld_safe --skip-grant-tables & 3,在原来的终端执行命令:/usr/bin/mysql -uroot -p 进行无密码

大数据学习——关于hive中的各种join

准备数据 2,b 3,c 4,d 7,y 8,u 2,bb 3,cc 7,yy 9,pp 建表: create table a(id int,name string) row format delimited fields terminated by ','; create table b(id int,name string) row format delimited fields terminated by ','; 导入数据: load data local inpath '/root/h

大数据学习之Scala中main函数的分析以及基本规则(2)

一.main函数的分析 首先来看我们在上一节最后看到的这个程序,我们先来简单的分析一下.有助于后面的学习 object HelloScala { def main(args: Array[String]): Unit = { println("I Love You Scala"); } } 如图所看到的,在Scala中能够使用object和class分别定义一个类.两者还是存在一些区别.以后我会在专门的博客中给予介绍. 在Scala中定义一个函数使用:def 来修饰 完整定义一个函数为

大数据学习:Hadoop中伪分布的搭建

<注:我们假设使用的是一个没有进行过任何配置的Linux系统,下面我们开始进行伪分布的搭建> 1.设置IP 地址 设置完成后,执行命令:service iptables restart 验证:         ifconfig 2. 关闭防火墙 执行命令        service iptables stop 验证:                 service iptables status 3.关闭防火墙的自动运行 执行命令        chkconfig iptables off

记几个rac安装执行root.sh的报错

这次在客户现场进行安装,由于实现并没有和硬件的人协调好,导致安装过程中环境出现各种问题,在这一次安装中基本上见到了所有报错,还包括主机频繁重启,以及配置信息丢失等问题, 以下为在安装rac的过程中,执行root.sh脚本报错的三个问题: /u01/11.2.0/grid/bin/srvctl start nodeapps -n RAC01 ... failed FirstNode configuration failed at  /u01/11.2.0/grid/crs/install/crsc

大数据学习系列之四 ----- Hadoop+Hive环境搭建图文详解(单机)

引言 在大数据学习系列之一 ----- Hadoop环境搭建(单机) 成功的搭建了Hadoop的环境,在大数据学习系列之二 ----- HBase环境搭建(单机)成功搭建了HBase的环境以及相关使用介绍.本文主要讲解如何搭建Hadoop+Hive的环境. 一.环境准备 1,服务器选择 本地虚拟机 操作系统:linux CentOS 7 Cpu:2核 内存:2G 硬盘:40G 说明:因为使用阿里云服务器每次都要重新配置,而且还要考虑网络传输问题,于是自己在本地便搭建了一个虚拟机,方便文件的传输以

好程序员大数据学习路线之hive表的查询

好程序员大数据学习路线之hive表的查询 1.join 查询 1.永远是小结果集驱动大结果集(小表驱动大表,小表放在左表). 2.尽量不要使用join,但是join是难以避免的. left join . left outer join . left semi join(左半开连接,只显示左表信息) hive在0.8版本以后开始支持left join left join 和 left outer join 效果差不多 hive的join中的on只能跟等值连接 "=",不能跟< &g