数仓工具 将结构化数据映射成表 提供类SQL查询

架构原理

image.png

HIVE基本数据类型

Hive数据类型 Java数据类型
TINYINT byte
SMALINT short
INT int
BIGINT long
BOOLEAN boolean
FLOAT float
DOUBLE double
STRING string
TIMESTAMP
BINARY
数据类型 语法示例
STRUCT struct()
例如struct
MAP map()
例如map
ARRAY Array()
例如array

操作

没啥好操作的 大致和SQL差不多,多练就行

  • 查询
  • 分组
  • Join
  • 排序

窗口函数 Over()

UDF

  1. import org.apache.hadoop.hive.ql.exec.UDFArgumentException;
  2. import org.apache.hadoop.hive.ql.metadata.HiveException;
  3. import org.apache.hadoop.hive.ql.udf.generic.GenericUDFInitCap;
  4. import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
  5. import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorFactory;
  6. public class Lower extends GenericUDFInitCap {
  7. @Override
  8. public ObjectInspector initialize(ObjectInspector[] arguments) throws UDFArgumentException {
  9. return PrimitiveObjectInspectorFactory.javaStringObjectInspector;
  10. }
  11. @Override
  12. public Object evaluate(DeferredObject[] arguments) throws HiveException {
  13. return arguments[0].get().toString().toLowerCase();
  14. }
  15. @Override
  16. public String getDisplayString(String[] children) {
  17. return super.getDisplayString(children);
  18. }
  19. }
  • add jar
  • create function xx as xxx包名


    分区和分桶

分区: 分目录
分桶:分文件(分到不同的block上)

数据上传分区目录后,让表和数据产生关联的方式

  • 修复

msck repair table xxx;

  • 添加分区

alter table xxxx add partition()

  • load数据

load data local inpath ''

优化

防止数据倾斜