Hive开发建议
HQL编写之隐式类型转换
查询语句使用字段的值做过滤时,不建议通过Hive自身的隐式类型转换来编写HQL。因为隐式类型转换不利于代码的阅读和移植。
建议示例:
select * from default.tbl_src where id = 10001; select * from default.tbl_src where name = 'TestName';
不建议示例:
select * from default.tbl_src where id = '10001'; select * from default.tbl_src where name = TestName;
说明:
基于Flink+Doris构建高性能高扩展的全端实时数据仓库教程
数据仓库建模和实战教程(理论和业务结合)
Python实战金融风控回归模型(附代码)
【Python入门教程】零基础教程/全套教程|港大学霸系统精讲
MSF渗透实战训练营——入门至入狱系列【网络安全】
基于Flink+Hudi构建企业万亿级云上实时数据湖教程
python量化交易
自动化运维脚本编程:CMD/DOS批处理实战案例学习
数据仓库建模和实战教程(理论和业务结合)
Python实战金融风控回归模型(附代码)
【Python入门教程】零基础教程/全套教程|港大学霸系统精讲
MSF渗透实战训练营——入门至入狱系列【网络安全】
基于Flink+Hudi构建企业万亿级云上实时数据湖教程
python量化交易
自动化运维脚本编程:CMD/DOS批处理实战案例学习
表tbl_src的id字段为Int类型,name字段为String类型。
HQL编写之对象名称长度
HQL的对象名称,包括表名、字段名、视图名、索引名等,其长度建议不要超过30个字节。
Oracle中任何对象名称长度不允许超过30个字节,超过时会报错。PT为了兼容Oracle,对对象的名称进行了限制,不允许超过30个字节。
太长不利于阅读、维护、移植。
HQL编写之记录个数统计
统计某个表所有的记录个数,建议使用“select count(1) from table_name”。
统计某个表某个字段有效的记录个数,建议使用“select count(column_name) from table_name”。
JDBC超时限制
Hive提供的JDBC实现有超时限制,默认是5分钟,用户可以通过java.sql.DriverManager.setLoginTimeout(int seconds)设置,seconds的单位为秒。
UDF管理
建议由管理员创建永久UDF,避免每次使用时都去add jar,和重新定义UDF。
Hive的UDF会有一些默认属性,比如deterministic 默认为true(同一个输入会返回同一个结果),stateful(是否有状态,默认为true)。当用户实现的自定义UDF内部实现了汇总等,需要在类上加上相应的注解,比如如下类
@UDFType(deterministic = false) Public class MyGenericUDAFEvaluator implements Closeable {
表分区优化建议
- 当数据量较大,且经常需要按天统计时,建议使用分区表,按天存放数据。
- 为了避免在插入动态分区数据的过程中,产生过多的小文件,在执行插入时,在分区字段上加上distribute by。
存储文件格式优化建议
Hive支持多种存储格式,比如TextFile,RCFile,ORC,Sequence,Parquet等。为了节省存储空间,或者大部分时间只查询其中的一部分字段时,可以在建表时使用列式存储(比如ORC文件)。