hive基础操作

删除表操作

1)查看hdfs
$> hadoop fs -lsr /user
drwxrwxr-x - hyxy supergroup 0 2019-05-27 08:57 /user/hive/warehouse/myhive.db
drwxrwxr-x - hyxy supergroup 0 2019-05-27 08:57 /user/hive/warehouse/myhive.db/student

2)查看mysql元数据
TBS表:
11 1558918627 6 0 hyxy 0 11 student MANAGED_TABLE

3)hive中删除表
hive> drop table student;

$> hadoop fs -lsr /user
drwxrwxr-x - hyxy supergroup 0 2019-05-27 09:05 /user/hive/warehouse/myhive.db
2)查看mysql元数据
TBS表:
无sutdent记录


Hive 构建在 Hadoop 之上,
• HQL 中对查询语句的解释、优化、生成查询计划是由 Hive 完成的
• 所有的数据都是存储在 HDFS 中
• 查询计划被转化为 MapReduce 任务,在 Hadoop 中执行(有些查询没有 MR 任务,如:select * from table)
• Hadoop和Hive都是用UTF-8编码的

hive 命令行 2.6 hive编程指南 32page

1.定义变量:
$>hive set name=hyxy; //进入到客户端,并定义了变量为name,值为hyxy;作用域在hivevar下
-d :使用的时候需要写全属性

  查看设置后的属性值 set 设置或显示:
	hive> set name;
	hive> set hivevar:name;
  查看系统默认的所有属性项:
	hive> set name=bar2
	hive> set -v;
  在shell命令行中,可以使用${}方式引用变量
	hive> create table ${name}(id int,${name} string);
	hive> show tables;
		  tt
		  bar2
	hive> describe bar2;
		  id                  	int                 	                    
		  bar2         	        string     

 hive> insert into table(id,bar2) values(1,'zhangsan');

应用:显示当前所在的database(一次性设置):
 hive> set hive.cli.print.current.db;
	   hive.cli.print.current.db=false
 hive> set hive.cli.print.current.db=true;
 hive (default)> show databases;

hive加载~/.hiverc文件,将属性配置此文件中,hive启动就会加载(永久性设置)
  将设置的属性统一放在一个文件中
   $>cd ~
   $>gedit .hiverc
      set hive.cli.print.current.db=true;
	  set name=crx;
   $>hive;
   $>set name
   测试成功输出crx!


2.hive中“一次使用”命令
   $> hive -e "select * from tt"
   $> hive -S -e "select * from tt"




3.hive执行sql文件(如果频繁使用某一查询,例如视图, 我们可以将SQl封装到一个sql文件中 )
 要求:一般情况下,将文件定义为*.q或*.hql;
1)创建文件
$>echo 'select * from tt' >> ~/text.hql
2)在外部执行hive命令
$>hive -f ~/text.hql; 
3)在hive中执行 需要给绝对路径
  hive> source  /home/crx/text.hql;

注意:source ~/Text.hql     //找不到路径
      source  ./text.hql;   //当前路径是~下,可以使用./

5.hive CLI自动补全

6.默认情况下,在/home/hyxy目录下,可以查看.hivehistory文件,显示历史SQL的操作;

7.在hive Cli可以使用shell命令
hive>!clear;

8.在hive Cli中可以使用hadoop的dfs命令。
hive>dfs -lsr /user;

9.查找表时,显示字段名称;
hive>set hive.cli.print.header=true;
hive (default)> select * from toss1;
OK
toss1.i toss1.bar2
1 zhangsan

hive基本数据类型 page494

1.基本数据类型
   hive类型         说明              java类型       实例
1).tinyint     1byte有符号的整数        byte          20
2).smalint     2byte有符号的整数        short         20
3).int         4byte有符号的整数        int           20
4).bigint      8byte有符号的整数        long          20
5).boolean     布尔类型,true或false    boolean       true
6).float       单精度                   float         3.217
7).double      双精度                   double        3.212
8).string      字符序列,单双即可       string       ‘zhang’;“ashakjds” 
9).timestamp   时间戳,精确的纳秒       timestamp    ‘158030219111’
10).binary     字节数组                 byte[]    
   
2.集合数据类型 
     hive类型         说明                                  java类型           实例
   1).struct      对象类型,可以通过字段名.元素名来访问      object            struct('name','age',1,1.2)
   2).map         一组键值对的元组                           map               map('name','zhangsan','age','23')
   3).array       数组                                       array             array('name','age')
   4).union       组合                      
   
3.案例:
     hive>create table employees(
       >  name string,
	   >  salary float,
	   >  subordinates array<string>,
	   >  deductions map<string,float>,
	   >  address struct<street:string,city:string,state:string,zip:int>
	   > );


hive数据编码格式
    1.默认hive通过^A(\001)、^B(\002)、^C(\003)分别对列、(array和struct)、map进行匹配;
    2.创建表时,可以通过以下命令进行设置:
       row format delimited
       fields terminated by '\001'
       collection items terminated by '\002'
       map keys terminated by '\003'
       lines terminated by '\n'

类型 描述
\n 对于文本文件来说,每行都是一条记录,因此换行符可以分割记录
^A(Ctrl+A) 用于分隔字段(列)。在CREATE TABLE语句中可以使用八进制编码\001表示
^B 用于分隔ARRARY或者STRUCT中的元素,或用于MAP中键-值对之间的分隔。在CREATE TABLE语句中可以使用八进制编码\002表示
^C 用于MAP中键和值之间的分隔。在CREATE TABLE语句中可以使用八进制编码\003表示


1)创建表,插入txt文件数据例子
hive> CREATE TABLE IF NOT EXISTS employee ( eid int, name String,

salary String, destination String)
COMMENT ‘Employee details’
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ‘\t’
LINES TERMINATED BY ‘\n’
STORED AS TEXTFILE;

换成一行执行
hive> CREATE TABLE IF NOT EXISTS employee ( eid int, name String, salary String, destination String) COMMENT ‘Employee details’ ROW FORMAT DELIMITED FIELDS TERMINATED BY ‘\t’ LINES TERMINATED BY ‘\n’ STORED AS TEXTFILE;

2)创建txt文件,(注意空格是Tab如果换成空格数据插入null)
$> gedit employee.txt
1201 Gopa 45000 Technical manager
1202 Manisha 45000 Proof reader
1203 Masthanvali 40000 Technical writer
1204 Kiran 40000 Hr Admin
1205 Kranthi 30000 Op Admin

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值