Hive 简单SQL
1.创建表
(1)内部表和外部表的区别
默认创建的是内部表,可以指定目录,如果不指定则会创建默认目录,一旦drop,该目录和数据都会被删除
创建external table 的时候需要指定存放目录,并且drop表的时候,不会删除该目录和目录下的数据,只会删除元信息
#创建一个外部表
0: jdbc:hive2://192.168.163.102:10000> create external table t10(c1 int,c2 string) row format delimited fields terminated by ',' stored as testfile location "/dir1";
[root@Darren2 tmp]# hdfs dfs -put file1 /dir1
[root@Darren2 tmp]# hdfs dfs -ls -R /dir1
-rw-r--r-- 1 root supergroup 24 2017-11-25 20:53 /dir1/file1
0: jdbc:hive2://192.168.163.102:10000> drop table t10;
No rows affected (0.41 seconds)
[root@Darren2 tmp]# hdfs dfs -ls -R /dir1
17/11/25 20:56:41 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
-rw-r--r-- 1 root supergroup 24 2017-11-25 20:53 /dir1/file1
#创建一个默认的内部表
0: jdbc:hive2://192.168.163.102:10000> create table t2(c1 int,c2 string) row format delimited fields terminated by ',' stored as textfile;
(2)Hive支持的存储文件格式
textfile, sequencefile, orc, parquet,avro
0: jdbc:hive2://192.168.163.102:10000> create table t5(c1 int,c2 string) row format delimited fields terminated by ',' stored as sequencefile ;
0: jdbc:hive2://192.168.163.102:10000> insert into t5 select * from t4;
#作为sequencefile格式存储的文件无法直接查看其内容
[root@Darren2 tmp]# hdfs dfs -ls /user/hive/warehouse/testdb1.db/t5/
-rwxr-xr-x 1 root supergroup 146 2017-11-26 03:03 /user/hive/warehouse/testdb1.db/t5/000000_0
0: jdbc:hive2://192.168.163.102:10000> desc formatted t5;
2.导入数据到hive
语法:
LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename [PARTITION (partcol1=val1, partcol2=val2 ...)]
(1) 直接把本地的文件导入到hive中的表
0: jdbc:hive2://192.168.163.102:10000> load data local inpath '/tmp/file1' into table t1;
0: jdbc:hive2://192.168.163.102:10000> select * from t1;
+--------+--------+--+
| t1.c1 | t1.c2 |
+--------+--------+--+
| 1 | aaa |
| 2 | bbb |
| 3 | ccc |
| 4 | ddd |
+--------+--------+--+
(2)加载数据到表中,但是会覆盖表中所有数据,实质是覆盖t1目录下的所有文件
0: jdbc:hive2://192.168.163.102:10000> load data local inpath '/tmp/file3' overwrite into table t1;
No rows affected (0.597 seconds)
0: jdbc:hive2://192.168.163.102:10000> select * from t1;
+--------+---------+--+
| t1.c1 | t1.c2 |
+--------+---------+--+
| 1 | yiyi |
| 2 | erer |
| 3 | sansan |
| 4 | sisi |
+--------+---------+--+
4 rows selected (0.073 seconds)
(3)把hdfs上的文件导入到hive中的表
[root@Darren2 tmp]# cat /tmp/file2
5,eee
[root@Darren2 tmp]# hdfs dfs -put /tmp/file2 /user/hive/warehouse/testdb1.db/t1
0: jdbc:hive2://192.168.163.102:10000> load data inpath '/user/hive/warehouse/testdb1.db/t1/file2' into table t1;
0: jdbc:hive2://192.168.163.102:10000> select * from t1;
+--------+--------+--+
| t1.c1 | t1.c2 |
+--------+--------+--+
| 1 | aaa |
| 2 | bbb |
| 3 | ccc |
| 4 | ddd |
| 5 | eee |
+--------+--------+--+
(4)根据一个表创建另一个表,同时插入数据
0: jdbc:hive2://192.168.163.102:10000> create table t2 as select * from t1;
(5)根据一个表先创建表结构,后插入数据
0: jdbc:hive2://192.168.163.102:10000> create table t3 like t1;
0: jdbc:hive2://192.168.163.102:10000> insert into t3 select * from t1;
3,从查询结果导数据到文件系统中
(1)从查询结果导数据到HDFS文件系统中
0: jdbc:hive2://192.168.163.102:10000> select * from t1;
+--------+---------+--+
| t1.c1 | t1.c2 |
+--------+---------+--+
| 1 | yiyi |
| 2 | erer |
| 3 | sansan |
| 4 | sisi |
+--------+---------+--+
0: jdbc:hive2://192.168.163.102:10000> insert overwrite directory '/user/hive/warehouse/tmp' select * from testdb1.t1;
[root@Darren2 tmp]# hdfs dfs -ls -R /user/hive/warehouse/tmp
-rwxr-xr-x 1 root supergroup 30 2017-11-26 00:25 /user/hive/warehouse/tmp/000000_0
[root@Darren2 tmp]# hdfs dfs -get /user/hive/warehouse/tmp/000000_0 /tmp/
导出的文件的分隔符对应的ASCII码是Ctrl+a 即\001
[root@Darren2 tmp]# vim /tmp/000000_0
1^Ayiyi
2^Aerer
3^Asansan
4^Asisi
利用这个文件创建一个外部表,使用\001为分隔符
0: jdbc:hive2://192.168.163.102:10000> create external table t5(c1 int,c2 string) row format delimited fields terminated by '\001' location '/user/hive/warehouse/tmp/';
0: jdbc:hive2://192.168.163.102:10000> select * from t5;
+--------+---------+--+
| t5.c1 | t5.c2 |
+--------+---------+--+
| 1 | yiyi |
| 2 | erer |
| 3 | sansan |
| 4 | sisi |
+--------+---------+--+
(2)从查询结果导数据到本地
0: jdbc:hive2://192.168.163.102:10000> insert overwrite local directory '/tmp' select * from testdb1.t1;
[root@Darren2 tmp]# ls /tmp/000000_0
/tmp/000000_0
4 insert
(1) insert 插入数据的实质是建立一个文件
0: jdbc:hive2://192.168.163.102:10000> insert into t5 values(4,'sisi');
No rows affected (17.987 seconds)
0: jdbc:hive2://192.168.163.102:10000> dfs -ls /user/hive/warehouse/testdb1.db/t5 ;
+----------------------------------------------------------------------------------------------------------------+--+
| DFS Output |
+----------------------------------------------------------------------------------------------------------------+--+
| Found 2 items |
| -rwxr-xr-x 1 root supergroup 146 2017-11-26 03:03 /user/hive/warehouse/testdb1.db/t5/000000_0 |
| -rwxr-xr-x 1 root supergroup 106 2017-11-26 04:22 /user/hive/warehouse/testdb1.db/t5/000000_0_copy_1 |
+----------------------------------------------------------------------------------------------------------------+--+
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
腾讯大规模Hadoop集群实践
腾讯大规模Hadoop集群实践 转自:http://www.csdn.net/article/2014-02-19/2818473-Tencent-Hadoop ID lishilong404740787 TDW是腾讯最大的离线数据处理平台。本文主要从需求、挑战、方案和未来计划等方面,介绍了TDW在建设单个大规模集群中采取的JobTracker分散化和NameNode高可用两个优化方案。 TDW(Tencent distributed Data Warehouse,腾讯分布式数据仓库)基于开源软件Hadoop和Hive进行构建,打破了传统数据仓库不能线性扩展、可控性差的局限,并且根据腾讯数据量大、计算复杂等特定情况进行了大量优化和改造。 TDW服务覆盖了腾讯绝大部分业务产品,单集群规模达到4400台,CPU总核数达到10万左右,存储容量达到100PB;每日作业数100多万,每日计算量4PB,作业并发数2000左右;实际存储数据量80PB,文件数和块数达到6亿多;存储利用率83%左右,CPU利用率85%左右。经过四年多的持续投入和建设,TDW已经成为腾讯最大的离线数据处理平台。 TDW的...
- 下一篇
HBase工具之监控Region的可用和读写延时状况
1、介绍 HBase集群上region数目由于业务驱动而越来越多,由于服务器本身,网络以及hbase内部的一些不确定性bug等因素使得这些region可能面临着不可用或响应延时情况。通过对region的监控,也可以反映出hdfs集群的状况 2、工具 org.apache.hadoop.hbase.tool.Canary 监控Region的可用和读写状况 Usage: bin/hbase org.apache.hadoop.hbase.tool.Canary [opts] [table 1 [table 2...]] where [opts] are: -help Show this help and exit. -daemon Continuous check at defined intervals. -interval <N>Interval between checks (sec) 例如:执行${HBASE_HOME}/bin/hbase org.apache.hadoop.hbase.tool.Canary day_hotstatic 结果信息如下: ...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Windows10,CentOS7,CentOS8安装Nodejs环境
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- CentOS8编译安装MySQL8.0.19
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS8安装Docker,最新的服务器搭配容器使用
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- SpringBoot2整合Redis,开启缓存,提高访问速度
- CentOS7,8上快速安装Gitea,搭建Git服务器