Hive
内部表:删除表会删除原始数据
外部表:删除表不会删除原始数据
排序:
sort by :分区内排序
order by:全局排序
Distrbute by :分区内结合sortby使用
Cluster by:当Distrbute by和sort by字段相同时使用,不能指定排序规则
窗口函数:
rank()
dense_rank
row_number:
over():
自定义UDF和UDTF
)用UDF函数解析公共字段;用UDTF函数解析事件字段。
自定义UDF:继承UDF,重写evaluate方法
自定义UDTF:继承自GenericUDTF,重写3个方法:initialize(自定义输出的列名和类型),process(将结果返回forward(result)),close
为什么要自定义UDF/UDTF,因为自定义函数,可以自己埋点Log打印日志,出错或者数据异常,方便调试.
Hive优化:
1.mapJoin(不符合转化为common join)将小表全部加载在内存中在map端进行join,避免reduce处理
2.行列过滤:尽量不使用*查询全部字段
如果使用副表关联,关联字段不写在where后面避免全表扫描
3.分区分桶技术
4.合理设置map和Reduce数量
5.参数设置:合并小文件
6.tez引擎优化
Sqoop:
参数:
/opt/module/sqoop/bin/sqoop import
–connect
–username
–password
–target-dir
–delete-target-dir
–num-mappers
–files-terminated-by
–query “$2” and $conditions
Sqoop导入导出数据一致性问题:
hive:空值底层是\N,mysql底层是null
导出时:–input-null-string 和 --input-null-non-string
导入时:–null-string 和 --null-non-string
–Staging-table 表名
–clear-staging-table