美文网首页
大数据面试题搜集--持续更新

大数据面试题搜集--持续更新

作者: 走在钢铁森林中 | 来源:发表于2021-12-07 10:33 被阅读0次

    # Hadoop

    • HIVE
      • UDF UDTF UDAF

    UDF:单行进入,单行输出
    UDAF:多行进入,单行输出
    UDTF:单行输入,多行输出

    • HIVE桶表

    数据根据不同的HASH值放入到不同的桶中。
    每个桶在物理上是HDFS上HIVE目录下的一个文件。
    数据放入桶表的话,一个桶对应一个REDUCE任务。
    桶表专门用于抽样查询,是很专业性的,不是日常用来存储数据的表,需要抽样查询时,才创建和使用桶表。

    • Hive 中的压缩格式TextFile、SequenceFile、RCfile 、ORCfile各有什么区别

    TextFile
    文本格式,行方式存储。
    SequenceFile
    SequenceFile是Hadoop API提供的一种二进制文件支持,存储方式为行存储,其具有使用方便、可分割、可压缩的特点。
    SequenceFile支持三种压缩选择:NONE,RECORD,BLOCK。Record压缩率低,一般建议使用BLOCK压缩。
    优势是文件和hadoop api中的MapFile是相互兼容的
    RCFile
    存储方式:数据按行分块,每块按列存储。结合了行存储和列存储的优点:
    首先,RCFile 保证同一行的数据位于同一节点,因此元组重构的开销很低;
    其次,像列存储一样,RCFile 能够利用列维度的数据压缩,并且能跳过不必要的列读取;
    ORCFile
    存储方式:数据按行分块 每块按照列存储。
    压缩快、快速列存取。
    效率比rcfile高,是rcfile的改良版本。

    • HIVE hive.map.aggr、hive.groupby.skewindata(数据倾斜时负载均衡)执行过程

    1.生成两个job执行group by,第一个job中,各个map是平均读取分片的,在map阶段对这个分片中的数据根据group by 的key进行局部聚合操作,这里就相当于Combiner操作。
    2.在第一次的job中,map输出的结果随机分区,这样就可以平均分到reduce中
    3.在第一次的job中,reduce中按照group by的key进行分组后聚合,这样就在各个reduce中又进行了一次局部的聚合。
    4.因为第一个job中分区是随机的,所有reduce结果的数据的key也是随机的,所以第二个job的map读取的数据也是随机的key,所以第二个map中不存在数据倾斜的问题。
    5.在第二个job的map中,也会进行一次局部聚合。
    6.第二个job中分区是按照group by的key分区的,这个地方就保证了整体的group by没有问题,相同的key分到了同一个reduce中。
    7.经过前面几个聚合的局部聚合,这个时候的数据量已经大大减少了,在最后一个reduce里进行最后的整体聚合。

    相关文章

      网友评论

          本文标题:大数据面试题搜集--持续更新

          本文链接:https://www.haomeiwen.com/subject/ywcwxrtx.html