数仓相关思考4

偏执的太偏执、 2023-01-03 14:25 251阅读 0赞

数仓相关思考4

1.数仓中向表中导入数据的方式以及区别是什么?

  • load加载方式: 不走Job!
    如果是本地的文件,上传到表的目录中!
    如果是HDFS的文件,移动到表的目录中!
  1. 手动上传和load的区别:
  2. 如果是全量表,没有任何区别!
  3. 如果是分区表,load操作会生成分区的元数据!
  4. 如果是手动上传,必须修复表的元数据: msck repair table 表名
  • insert插入数据方式: 走Job!
    一些特定操作只能使用Insert!
    例如: 创建一个分桶表!
    表中的数据存储格式不是textfile格式!

2.动态分区和静态分区的使用场景和作用

动态分区和静态分区的作用都是向表的分区中插入数据!

  1. 场景: 如果插入的数据都是向同一个分区插入,可以使用静态分区!
  2. 如果插入的数据,需要向不同的分区插入,只能使用动态分区!

3.lateral view的作用

如果需要将UDTF函数返回的数据和其他列一起查询,必须使用lateral view

4.如何自定义UDTF?

  1. 继承GenericUDTF
  2. 实现Initialize,对函数的入参进行检查,返回函数返回的每行的object inspector
  3. 通过process()对输入的数据进行处理,调用forward()输出

5.如何创建函数?自己创建的函数和系统函数有什么区别?

永久函数: create [temporary] function 函数名 as ‘函数对应的全类名’
自己创建的函数,属于元数据,有库的范围!如果要跨库调用,必须加库名.函数名!

6.如下命令

hive —hivevar str={“name”:“大郎”,“sex”:“男”,“age”:“25”,“wife”:[{“name”:“小潘”}]}运行的环境中请问如何获取小潘?

  1. select get_json_object('${str}','$.wife[0].name')

发表评论

表情:
评论列表 (有 0 条评论,251人围观)

还没有评论,来说两句吧...

相关阅读

    相关 相关思考5

    数仓相关思考5 1.什么样的表适合做成拉链表? > 缓慢变化的维度表, 需要记录表中每条数据的变化情况 2.累积型快照事实表如何分区?如何导入数据?

    相关 相关2

    数仓小思考2 1.数仓分层每一层用来做什么 > O(original)DS层: 原始数据存储层 原始数据不做处理,保持原貌,直接导入! > 分区表

    相关 相关

    数仓小思考 1.为什么使用关系型存储用户业务数据 > RDMS(关系型数据库)是基于OLTP(online transaction process在线事务处理)设计