数据仓库阶段:UDF 函数与字典表该如何抉择?

问答 AIZero ⋅ 于 2020-08-30 16:23:17 ⋅ 最后回复由 青牛 2020-08-30 20:21:35 ⋅ 2391 阅读
  1. ODS层数据到DWD层数据经过与字典表的innerjoin的关联,就比如最简单的国家英文名转到国家中文名,可以用字典关联后替换掉,也可以用UDF中生成的jar包来进行变化。字典表如果大的时候连接通过MapReduce似乎效率并不高,字典表小的时候通过semijoin的方式好像效率也很高,但是这两种连接方式的效率与UDF函数jar包实现的比较,哪种方式性能上更加优异,在实际应用中该如何选择?
  2. 如果要应用UDF函数,我想能否在原始数据到ODS层的MapReduce中就进行判断和替换?还是最好在ODS到DWD层时候使用?并不是很理解UDF函数在什么时候用比较好?
点赞
成为第一个点赞的人吧 :bowtie:
回复数量: 3
  • 青牛 海汼部落创始人,80后程序员一枚,曾就职于金山,喜欢倒腾技术做产品
    2020-08-30 18:22:37

    复杂的字段格式转换现有函数不能完成时需要自己定制一个udf,hive大小表join满足条件自动的优化成semijoin所以不用特意写个udf。

  • AIZero
    2020-08-30 19:41:25

    @青牛 假如源数据到ODS层跑MapReduce的代码中直接封装了UDF函数转换的逻辑,成为一个比较大的jar包,进行数据清洗,这是第一种方案。第二种方案,先一个专门跑MapReduce的jar包,到ODS层,然后从ODS层到DWD层中用UDF的jar包进行数据转换。这两种方案哪个更好,老师能详细说说最初数据清洗跑jar包和hive中用UDF的jar包底层实现有什么区别吗?

  • 青牛 海汼部落创始人,80后程序员一枚,曾就职于金山,喜欢倒腾技术做产品
    2020-08-30 20:21:35

    不存在你说的第二种方案,ODS层是直接上传就完事了。用hive和mr都可以到ETL从ODS到DWD。hive做脏数据统计麻烦,mr可以用counter做脏数据统计。写mr的方式好,这样可以既出数据又做了脏数据统计。

暂无评论~~
  • 请注意单词拼写,以及中英文排版,参考此页
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`, 更多语法请见这里 Markdown 语法
  • 支持表情,可用Emoji的自动补全, 在输入的时候只需要 ":" 就可以自动提示了 :metal: :point_right: 表情列表 :star: :sparkles:
  • 上传图片, 支持拖拽和剪切板黏贴上传, 格式限制 - jpg, png, gif,教程
  • 发布框支持本地存储功能,会在内容变更时保存,「提交」按钮点击时清空
Ctrl+Enter