大数据面试题记录

1、为什么要对数据仓库分层?

1、用空间换时间,通过大量的预处理来提升应用系统的用户体现(效率),因此数据仓库会存在大量冗余的数据。
2、如果不分层的话,如果源业务系统的业务规则发生变化将会影响整个数据清洗过程,工作量巨大。
3、通过数据分层管理可以简化数据清洗的过程,因为把原来一步的工作分多个步骤去完成,相当于把一个复杂的工作拆成了多个简单的工作,把一个黑盒变成了一个白盒,每一层的处理逻辑都相对简单容易理解,这样我们比较容易保证每一个步骤的正确性,当数据发生错误的时候,往往我们只需要局部调整某个步骤即可。

2、使用过Hive解析JSON串吗?

1、将json以字符串的方式整个入Hive表,然后通过使用UDF函数解析已经导入到hive中的数据,比如使用LATREAL VIEW json_tuple的方法,获取所需要的列名。
2、在导入之前将json拆成各个字段,导入Hive表的数据是已经解析过得。这将需要使用第三方的SerDe

3、sort by 和 order by的区别

order by 会对输入做全局排序,因此只有一个reducer (多个reducer无法保证全局有序)只有一个reducer,会导致当输入规模较大时,需要较长的计算时间。
sort by 不是全局排序,其在数据进入reducer前完成排序。因此,如果用sort by 进行排序,并且设置mapred.reduce.tasks>1,则sort by 只保证每个reducer的输出有序,不保证全局有序。

posted @ 2021-05-22 22:48  男神睛  阅读(67)  评论(0编辑  收藏  举报