概述
一、如何保证数据仓库数据的质量
1.从技术层面上:构建一套高效、健壮的ETL程序去保证数据清洗、装换后数据的正确性和一致性;
2.从流程层面上:整个ETL是多个任务的,按步骤顺序执行的一个过程,后置任务依赖前置任务,定期执行,整个流程需要自动化,并且那个环节出现了问题,给予预警,通知相关维护人员及时处理;
3.从管理层面上:数据仓库构建在公司各个业务系统之上,它是一面镜子,很多时候它能反映出业务系统的问题,所以需要管理层的支持和约束。
二、Sqoop常见问题
1.事务处理:由于线程的并发性,一个导入操作可能并不是原子性的。如果tasks失败了(由于网络问题或者其它的问题), 这些tasks会尝试从它们开始导入数据的地方重新开始,会插入重复的记录。
这次写数据的时候,Sqoop不 提防这种潜在的问题。Sqoop提供的一个解决办法就是使用中间表,参数为: --staging-table --clear-staging-table;
2.字段及名称问题:sqoop 从 mysql 导入 hive 的字段名称问题 hive 中有些关键字限制,因此有些字段名称在 mysql 中可用,但是到了 hive 就不 行。部分不能在在hive中使用的字段名称 order,sort,
reduce,cast,directoy;
3.参数处理:部分字段含有特殊字符时需要添加双引号,单双引号都有时,一般采用双引 号套单引号;
4.表的处理:涉及的源表和目标表不一致,包括字段名称不一致,字段的数目不一致,数据的分隔符未指定等。查看mr任务的报错再判断是否是字段的问题。
三、GC回收机制
1.判断垃圾是否要回收的方法:
a.引用计数算法:很多教科书判断对象是否存活的算法是这样的,给对象中添加一个引用计数器,每当有一个地方引用时,计数器值就加1,当引用失效时,计数器值减1;任何时候计数器为0的对象就是不可能再被使用的。客观的说,引用计数法的实现简单,判断效率也很高,但是java虚拟机里面没有选用引用计数法,其中最主要的原因是它很难解决对象之间相互循环引用的问题;
b.可达性分析算法:在主流的商用程序语言java等主流实现中,都是通过可达性分析来判定对象是否存活。这个算法的基本思路就是通过一系列的称为”GC Roots”的对象作为起始点,从这些节点开始向下搜索,搜索所走过的路劲称为引用链,当一个对象到GC Roots没有任何引用链相连(用图论的话来说,就是GC Root到这个对象不可达)时,则证明此对象是不可用的。在java语言中,可作为GC Roots的对象包括下面几种:
1)虚拟机栈(栈帧中的本体变量表)中引用的对象;
2)方法区中类静态属性引用的对象;
3)方法区中常量引用的对象。
2.垃圾收集算法:
a.标记-清除算法
b.复制算法
c.标记-整理算法
d.分代收集算法
最后
以上就是温暖皮皮虾为你收集整理的Hive数仓数据质量,Sqoop常见问题及GC回收机制的全部内容,希望文章能够帮你解决Hive数仓数据质量,Sqoop常见问题及GC回收机制所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复