hive



一 基本命令:(注意hive命令都要加;)
     sphive 进入数据仓库
    show tables;   列出所有表名
    desc  table_name; 列出表内数据段信息    
   quit;退出hive
select * from aorder by rand() limit 10;  

二 建立表:

create table test_partition ( id int,
          name string,
          no int)

partitioned by(dt string)
stored as textfile;

CREATE TABLE  创建一个指定名字的表。如果相同名字的表已经存在,则抛出异常;用户可以用  IF NOT EXIST  选项来忽略这个异常。
EXTERNAL  关键字可以让用户创建一个外部表,在建表的同时指定一个指向实际数据的路径( LOCATION ), Hive 创建内部表时,会将数据移动到数据仓库指向的路径;若创建外部表,仅记录数据所在的路径,不对数据的位置做任何改变。在删除表的时候,内部表的元数据和数 据会被一起删除,而外部表只删除元数据,不删除数据。
如果文件数据是纯文本,可以使用  STORED AS TEXTFILE 。如果数据需要压缩,使用  STORED AS SEQUENCE 
有分区的表可以在创建的时候使用  PARTITIONED BY  语句。一个表可以拥有一个或者多个分区,每一个分区单独存在一个目录下。

三 插入数据:
3.1使用了OVERWRITE关键字,目标表中原来相同partition中的所有数据被覆盖,如果目标表中没有partition,则整个表会被覆盖。
从本地导入:load data local inpath  'wyp.txt'  into table wyp  PARTITION (dt=${dt});
从HDFS上导入: load data inpath  '/home/wyp/add.txt'  into table wyp;

3.2在实际情况中,表的输出结果可能太多,不适于显示在控制台上,这时候,将Hive的查询输出结果直接存在一个新的表中是非常方便的,我们称这种情况为CTAS(create table .. as select), CTAS唯一的限制是目标表,不能是一个有分区的表,也不能是外部表。 如下:
hive> create table test4
     > as
     > select id, name, tel
     > from wyp;

3.3将表的输出结果直接插入到另一个表内, 如果目标表(test)中不存在分区字段,可以去掉partition (age='25')语句。当然,我们也可以在select语句里面通过使用分区值来动态指明分区:
hive> insert into table test
     > partition (age= '25' )
     > select id, name, tel
     > from wyp;

四 删除:
删除表
DROP TABLE table_name;
截断清空表:
TRUNCATE TABLE table_name;

五 修改表
修改字段
     alter table  table_name  change colum1  colum2 column2_type ;  



五 hive与shell交互:
5.1建立一个脚本文件a.sh,用hive -e"select* from…">result.txt   可以将结果重定向到一个文件中去。
5.2用spark跑, /usr/bin/hadoop/software/spark/bin/spark-hive -e  "${query}" -c 1000  ,把命令写在query里
5.3写一个mapreduce跑

六 其他
order by 能保证结果全部有序化,sort by是保证同一个reduce下的有序
hive中判断某一字段为null :a is not null,或者a!=‘null’(不要和外面的引号重复)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值