hive中容易忽略的知识点--分隔符&类型转换&udf&udtf&udaf等等

前提:这里不详细讲解hive 指讲最容易忽略的一些细节

hive 常见问题
hdfs 已经有数据了,而且是以分目录即分区形式显示
这时候在数据位置建立外部表外部表数据指向目录,建表完成之后查询数据,发现查询不到,原因为何??
原因:只是建立了分区表,没有建立分区元数据(比如month=2020207),缺少分区元数据,所以查询不到
解决方法1:执行修复命令,修复元数据,再查询就显示了

hive> msck repair table dept_partition2;

决方法1:虽然已经有分区目录了,因为没有分区元数据
这时候需要重新建立分区

	hive (default)> alter table dept_partition2 add partition(month='201709',
 day='11');

hive中表默认分隔符
hive建立的表默认分隔符为‘001’
hive 中默认行分割符号’\n’
如果想指定其他分隔符使用row format delimited fields terminated by ‘\t’
mysql 底层分隔符是’,’ mysql 底层存储文件为.csv .tsv
sqoop 和hive 相互导入数据的时候注意

hive中null 底层存储
hive 表中null 值底层存储为’\N’
mysql 表中null 值存储为null
sqoop mysql 导入hive 时候注意

hive中的数据类型
hive hql 语句和mysql 类似,但是数据类型不太一样
Hive数据类型
TINYINT
SMALINT
INT
BIGINT
BOOLEAN
FLOAT
DOUBLE
STRING
TIMESTAMP
注意这里字符串是string 不是 varchar
hive新增了TIMESTAMP 时间戳的类型

另外hive 还有其他数据类型
struct 类似java 中类
array 类似java 中数组 取值也是角标[0]
map 类似java 中map 取值也是key取value 如:map[“key”]
建表时候这几个数据类型要注意;

hive中建表

在hive中使用建立表create xx之后 相当于在hdfs上建立一个目录

  1. 建表语句有如下(三种方式)
    直接创建:create table stu(id int,name varchar);
    还用as关键字创建: create table stu2 as select * from stu1;
    创建完直接就有数据了
    使用like关键字: create table stus like stu2;
    直接复制表结构
    当使用load data xx 上传之, 相当于在put 数据到表目录
    使用drop table xx 之后,相当于把表目录直接删除,表目录和数据一起删除了

  2. 上传数据方式有如下(三种方式)
    直接load: load data local inpath ‘/stu.txt’ overwrite into table stu2 partition(dt =‘2020-10-22’)
    使用insert: insert overwrite table stu2 select * from stu1;
    这种生产也很常用~~~~
    使用loaction 关键字: 这种情况一般先有数据,在数据目录建立外部表,使用location ‘/hive/warehouse/’ 指向数据

另外hive 建表语句如下切记使用if not exists 在表名前
防止建表错误,防止脚本之行时候错误;

CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name 
[(col_name data_type [COMMENT col_comment], ...)] 
[COMMENT table_comment] 
[PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)] 
[CLUSTERED BY (col_name, col_name, ...) 
[SORTED BY (col_name [ASC|DESC], ...)] INTO num_buckets BUCKETS] 
[ROW FORMAT row_format] 
[STORED AS file_format] 
[LOCATION hdfs_path]

查看表的详细信息,比如表是管理表还是外部表
这个实际生产常用

desc formatted  student3 ;

hive交互式命令
h

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值