Hive hive 的表就是 hdfs 的目录,数据就是 hdfs 的文件
嵌入模式:hive + derby,demo
每次执行 hive 命令,都会在当前目录中生成数据 derby 文件
在 console 管理界面执行命令 dfs ls
desc tableName
! 系统命令
Hive -S 静默模式
create table (id INT, name STRING)
安装客户端工具
Hadoop+Hive环境搭建
远程管理 1 2 3 4 5 6 7 启动web管理服务 hive --service hwi 编译war包:src/hwi jar cvfM0 hive-hwi-0.13 .0 .war -C web/ . 拷贝到hive的lib 目录下 修改hive-site.xml cp jdk/lib /tools .jar hive /lib / hive --service hiveserver &
数据类型的一些例子 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 // 学生成绩 create table s (id int , name String , grade array <float >); create table s2 (id int , name String , grade map <string , float >); create table s3 (id int , name String , grade array <map <string , float >>); //结构数据类型 create table s4 (id int , info struct <name :string , age:int >); // 创建表并指定存储位置,不指定的情况下会默认在 /usr/hive/warehouse create table s5(id int ) location '/pwd/s5' ; // 指定列的分割符号为 逗号 create table s6 (id int , name String ) row format delimited fields terminated by ',' ; //创建表并从 s5导入数据,以逗号为列的分隔符 crate table t7 row format delimited fields terminated by ',' as select * form s5; select unix_timestamp ();date 数据类型只有日期,没有具体到几点的时间
分区表 1 2 3 4 //基于 gender 的分区表 create table partition_table(id int , name String ) partitioned by (gender String ) row format delimited fields terminated by ',' ;insert into table partition_table partition (gender='M' ) slect id , name from sample_data where gender = 'M' ;
外部表 1 2 3 4 create external table external_student (sid int , sname string , age int ) row format delimited fields terminated by ',' location '/input' ;// 把本地文件导入到 hive 数据库中 LOAD DATA LOCAL INPATH '/data/login/20130101.csv' OVERWRITE INTO TABLE login PARTITION (dt='20130101' );
桶表 1 2 create table bucket_table (sid int , sname string , age int ) clustered by (sname) into 5 buckets row format delimited fields terminated by ',' ;//创建一个桶表,这个桶表是以sname作为哈希运算,运算后的结果放到5个桶中
视图 1 2 3 4 5 6 create view empinfo as select e .empno,e .ename,e .sal,e .sal*12 annlsal, d .dname from emp e , dept d where e .deptho=d .deptho;
数据导入 1 2 3 //导本机目录下的数据到t3表,并覆盖原来的数据。 load data local inpath '/root/data/' overwrite into table t3;