Hive表操作
Hive乱码解决
1、乱码现象
create database test1 comment "乱码测试";
use test1;
CREATE TABLE orders (
orderId bigint COMMENT '订单id',
orderNo string COMMENT '订单编号',
shopId bigint COMMENT '门店id'
);
2、处理步骤
-
注意:推荐先将node1虚拟机拍一个快照,拍完后再修改。
-
在node1上修改hive配置文件
文件路径: /export/server/hive/conf/hive-site.xml
修改内容:&useUnicode=true&characterEncoding=UTF-8
修改截图:
修改MySQL表:注意,下面的SQL语句,要在node1的MySQL上运行
use hive3;
#修改表字段注解和表注解
alter table DBS modify column `DESC` varchar(256) character set utf8;
alter table COLUMNS_V2 modify column COMMENT varchar(256) character set utf8;
alter table TABLE_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8;
#修改分区字段注解
alter table PARTITION_KEYS modify column PKEY_COMMENT varchar(4000) character set utf8;
alter table PARTITION_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8;
#修改索引注解
alter table INDEX_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8;
-
重启Hive的metastore进程
先通过kill -9 杀死metastore进程。然后再通过 nohup hive --service metastore & 重启
-
验证
drop database test1 cascade;
create database test1 comment "乱码测试";
use test1;
CREATE TABLE orders (
orderId bigint COMMENT '订单id',
orderNo string COMMENT '订单编号',
shopId bigint COMMENT '门店id'
);
建表语法
create [external] table [if not exists] 表名(字段名 字段类型 , 字段名 字段类型 , ... )
[partitioned by (分区字段名 分区字段类型)] # 分区表固定格式
[clustered by (分桶字段名) into 桶个数 buckets] # 分桶表固定格式 注意: 可以排序[sorted by (排序字段名 asc|desc)]
[row format delimited fields terminated by '字段分隔符'] # 自定义字段分隔符固定格式
[stored as textfile] # 默认即可
[location 'hdfs://node1.itcast.cn:8020/user/hive/warehouse/库名.db/表名'] # 默认即可
; # 注意: 最后一定加分号结尾
注意:
1- 关键字顺序是从上到下从左到右,否则报错
2- 关键字不区分大小写。也就是例如create可以大写也可以小写
数据类型
1、基本数据类型 整数: int 小数: float double 字符串: string varchar(长度) 日期: date timestamp 补充: timestamp时间戳,指的是从1970-01-01 00:00:00 到现在的时间的差值。 2、复杂数据类型 集合: array 映射: map 结构体: struct 联合体: union