本地创建/export/data/student.txt文件,把数据导入到 hive 的 student(id int, name string)表中。
1.数据准备(1)在/export/servers/data 这个目录下准备数据
[root@ambari01 /]# mkdir -p /export/data
[root@ambari01 /]# cd /export/data
(2)在/export/data目录下创建 student.txt 文件并添加数据
[root@ambari01 data]# vim student.txt
[root@ambari01 data]# cat student.txt
101 hadoop
102 hive
103 hbase
2.Hive 实际操作
这里可以在命令行直接输入hive进入,但是我的环境刚开始可以启动,后边出现卡死状态,所以我就放弃了这种方式,采用了beeline方式进行hive连接了。
(1)启动 hive
[root@ambari01 data]# cd /usr/hdp/2.6.5.0-292/hive/bin/
[root@ambari01 bin]# beeline -u jdbc:hive2://localhost:10000
Connecting to jdbc:hive2://localhost:10000
20/09/27 16:36:54 INFO Utils: Supplied authorities: localhost:10000
20/09/27 16:36:54 INFO Utils: Resolved authority: localhost:10000
20/09/27 16:36:54 INFO HiveConnection: Will try to open client transport with JDBC Uri: jdbc:hive2://localhost:10000
Connected to: Apache Hive (version 1.2.1000.2.6.5.0-292)
Driver: Hive JDBC (version 1.21.2.2.6.5.0-292)
Transaction isolation: TRANSACTION_REPEATABLE_READ
Beeline version 1.21.2.2.6.5.0-292 by Apache Hive
0: jdbc:hive2://localhost:10000>
(2)显示数据库
0: jdbc:hive2://localhost:10000> show databases;(3)删除数据库
0: jdbc:hive2://localhost:10000> drop database test CASCADE;(4)创建test数据库
0: jdbc:hive2://localhost:10000> create database IF NOT EXISTS test;(5)进入test数据库
0: jdbc:hive2://localhost:10000> use test;(6)设置显示当前数据库(操作久了,容易忘记)
0: jdbc:hive2://localhost:10000> select current_database();(7)显示 所有表
0: jdbc:hive2://localhost:10000> show tables;(8)删除已创建的 student 表
0: jdbc:hive2://localhost:10000> drop table student;(6)创建 student 内部表, 并声明文件分隔符’\t’
0: jdbc:hive2://localhost:10000> create table student(id int, name string) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';(7)查看表信息
0: jdbc:hive2://localhost:10000> desc student;(7)加载/export/data/student.txt 文件到 student 数据库表中。
0: jdbc:hive2://localhost:10000> load data local inpath '/export/data/student.txt' into table student;注意:这里涉及到一个上传目录跟文件的问题,如果你是本机用以上命令没有问题。
(坑)你本机IP是103,你远程连接的是104的主机
[root@ambari01 bin]# ip addr
2: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen
inet 192.168.51.103/24[root@ambari01 bin]# beeline -u jdbc:hive2://192.168.51.104:10000
0: jdbc:hive2://192.168.51.104:10000> load data local inpath '/export/data/student.txt' into table student;
Error: Error while compiling statement: FAILED: SemanticException Line 1:23 Invalid path ''/export/data/student.txt'': No files matching path file:/export/data/student.txt (state=42000,code=40000)
会报以上错误,其实是因为你的104主机没有/export/data/student.txt
解决方法一:
在104的机子上建立/export/data/student.txt文件就可以解决。
解决方法二:
直接把文件上传的HDFS上从HDFS文件中获取(这里还有一个坑,注意看命令它是没有local,LOAD DATA:加载数据;LOCAL:本地数据 INPATH:文件的地址 OVERWRITE:覆盖表中的数据 加overwrite是重写表的数据,不加是追加数据)
0: jdbc:hive2://192.168.51.104:10000> load data inpath '/export/data/student.txt' into table student;
(8)结果查询
0: jdbc:hive2://192.168.51.104:10000> select * from student;
+-------------+---------------+--+
| student.id | student.name |
+-------------+---------------+--+
| 101 | hadoop |
| 102 | hive |
| 103 | hbase |
+-------------+---------------+--+
参考文档:
https://blog.csdn.net/qq_46548855/article/details/105398405
https://blog.csdn.net/qq_40984307/article/details/105586882?utm_medium=distribute.pc_relevant.none-task-blog-title-1&spm=1001.2101.3001.4242
文章转载自程序猿诗和远方,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




