Hive学习笔记(二)

2.1HQL操作

       通常提到HQL,大多数人想到的是Hibernate Query Language。而在此处,HQL是Hive Query Language的缩写,同样它也是一种SQL语言,同mysql等数据库的SQL极其相似,但仍存在些许差异,比如,作为大数据处理不支持行级别的操作、不支持事物等。

2.1.1HQL对数据库及表的操作

(1)创建数据库

hive>CREATE DATABASE test
>LOCATION '/user/test/data';

(2)查看已存在的数据库、查看某个已存在的数据库信息

hive>SHOW DATABASES;
OK
default
test

hive>DESCRIBE DATABASE test
OK
test hdfs://user/hive/warehousedir/test.db hadoop

(3)切换数据库

hive>use test;
OK

(4)删除数据库

hive>DROP DATABASE IF EXISTS test CASCADE;
OK

注:由于表的删除、查看、切换操作与数据库一样,因此只写表的创建和修改操作。

(5)创建表

CREATE TABLE IF NOT EXISTS test.person(
name STRING COMMENT 'person name',
age INT COMMENT 'person age',
sex STRING COMMENT 'person sex',
address STRUCT<STREET:STRING,CITY:STRING,STATE:STRING>
)
COMMENT 'the info of person'
ROW FORMAT DELIMITED        
FIELDS TERMINATED BY '\001'
COLLECTION ITEMS TERMINATED BY '\002'
MAP KEYS TERMINATED BY '\003'
LINES TERMINATED BY '\n'
STORED AS TEXTFILE
LOCATION 'hdfs://user/hive/warehouse/test.db/person';

注释:ROW FORMAT DELIMITED //指定行列的数据格式

           FIELDS TERMINATED BY '\001'
           COLLECTION ITEMS TERMINATED BY '\002'
           MAP KEYS TERMINATED BY '\003'
           LINES TERMINATED BY '\n'

           STORED AS TEXTFILE     //指定文件的存储格式

           LOCATION   //指定该表的存储位置

 

创建分区表使用 partitioned by(key,type...),创建分桶表使用clustered by (id) into 3 buckets,clustered by表示分桶依据,into表示分成x个桶。

(6)修改表

a表重命名

ALTER TABLE test RENAME TO test1

b修改表的分区

//添加分区
ALTER TABLE test ADD PARTITION(x=?,y=?) LOCATION 'hdfs://user/hive/warehouse/test/a'

//修改分区存储位置
ALTER TABLE test ADD PARTITION(x=?,y=?) SET LOCATION 'hdfs://user/hive/warehouse/test/a'

//删除分区
ALTER TABLE test ADD DROP PARTITION(x=?,y=?)

 c修改表的结构和属性

//将person表中的name修改为pname并且移动到age字段之后
ALTER TABLE person
CHANGE COLUM NAME PNAME STRING
AFTER AGE;

//增加person表中的列
ALTER TABLE person ADD COLUMS (col1 INT,col2 STRING);

//删除列或者替换(删除person表中的所有列,增加col1 col2两列,表数据不会改变或丢失,只改变元数据)
ALTER TABLE person REPLACE COLUMNS(col1 INT,col2 STRING);

 

猜你喜欢

转载自blog.csdn.net/u011380972/article/details/81668339