• 【300+精选大厂面试题持续分享】大数据运维尖刀面试题专栏(十五)


    持续分享有用、有价值、精选的优质大数据面试题

    致力于打造全网最全的大数据面试专题题库

    136、以你的实际经验,说下怎样预防全表扫描?

    参考答案:

    1)应尽量避免在where 子句中对字段进行null 值判断,否则将导致引擎放弃使用索引而进行全表扫描。

    2)应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫。

    3)描应尽量避免在 where 子句中使用or 来连接条件,否则将导致引擎放弃使用索引而进行全表扫描。

    4)in 和 not in,用具体的字段列表代替,不要返回用不到的任何字段。in 也要慎用,否则会导致全表扫描。

    5)避免使用模糊查询

    6)任何地方都不要使用select* from t。

    137、Hive为什么要分桶?

    参考答案:

            Hive分桶通俗点来说就是将表或者分区中的文件分成几个文件去存储。比如表buck文件中本来是1000000条数据,由于在处理大规模数据集时,在开发和修改查询的阶段,如果能在数据集的一小部分数据上试运行查询,会带来很多方便,所以我们可以分4个文件去存储。

    138、Hive与HBase的区别?

    参考答案:

    (一)使用方面的区别

            Hive

                    1)Hive是一个构建在Hadoop平台上的数据仓库。

                    2)Hive数据存放在HDFS之上。

                    3)Hive数据查询最终被转化为MapReduce。

            HBase

                    1)HBase是一个基于HDFS平台的NoSQL数据库。

                    2)HBase数据存储在HDFS之上。

                    3)HBase是基于数据库本身的实时查询,而非运行MapReduce。

    (二)特点的区别

            Hive

                    1)Hive方便熟悉SQL的人,快速上手大数据分析。

                    2)Hive默认计算引擎是MapReduce,所以查询时间比较长。

                    3)Hive底层计算引擎也可以更换为Spark/Tez。

               4)Hive中的表是纯逻辑表,只是表的定义,本身不存储和计算,完全依赖HDFS/MapReduce

            HBase

                    1)HBase本身不支持SQL,需要通过集成Phoenix/Hive才支持SQL。

                    2)HBase基于一级索引Rowkey进行数据查询,所以查询速度比较快。

                    3)HBase底层基于Scan进行数据扫描,而非基于MapReduce

                    4)HBase中的表是物理表,有独立的物理数据结构,查询时可以将数据加载到内存,提升后续的查询效率

    (三)局限性的区别

            Hive

                    1)Hive目前仅支持ORCFile文件格式的数据更新操作,还需要提前开启事务支持。

                    2)Hive的运行依赖HDFS进行数据存储,默认依赖MapReduce进行数据计算。

            HBase

                    1)HBase本身不支持SQL查询功能,需要通过与Phoenix集成实现。

                    2)HBase的运行依赖Zookeeper提供协调服务(配置服务、维护元数据、命名空间服务),依赖HDFS数据存储。

    (四)应用场景的区别

            Hive

                    1)Hive主要用于构建基于Hadoop平台的数据仓库,离线处理海量数据。

                    2)Hive提供完整的SQL实现,一般用于历史数据的分析、挖掘。

            HBase

                    1)HBase适合用了大数据的实时查询、海量数据的存储。

                    2)HBase是近实时数据库,支持线上业务的实时查询。

    139、手写连续登入7日的用户SQL?

    数据格式

    第一列(uid):用户id

    第二列(dt):登录时间

    第三列(status):用户状态

    数据示例

    1,2021-05-11,1

    1,2021-05-12,1

    1,2021-05-13,1

    1,2021-05-14,1

    1,2021-05-15,1

    1,2021-05-16,1

    1,2021-05-17,1

    1,2021-05-18,1

    2,2021-05-11,1

    2,2021-05-12,1

    2,2021-05-13,0

    2,2021-05-14,1

    2,2021-05-15,1

    2,2021-05-16,0

    2,2021-05-17,1

    2,2021-05-18,0

    3,2021-05-11,1

    3,2021-05-12,1

    3,2021-05-13,1

    3,2021-05-14,0

    3,2021-05-15,1

    3,2021-05-16,1

    3,2021-05-17,1

    3,2021-05-18,1

    参考答案:

    (1)创建表

    create table ulogin(

    uid int, dt date, status int )

    row format delimited fields terminated by ','

    stored as textfile

    location '/user/hive/warehouse/sca.db/ulogin/';

    (2)加载数据

    load data local inpath '/home/hadoop/shell/data/userlogin.txt' into table ulogin;

    (3)具体实现

    使用row_number()函数在组内给每行数据编号

    使用的row_number 给日期排序

    select uid, dt, row_number() over (partition by uid order by dt) gid from ulogin where status=1;

    (4)具体实现

    日期-rownum = gid,得到结果可以作为连续登录的依据

    通过date_sub函数来获取连续登录的日期

    select uid, dt, date_sub(dt, row_number() over (partition by uid order by dt)) gid from ulogin where status=1;

    (5)具体实现

    根据求得的gid作为分组条件,统计最终结果

    通过group by  count having分组统计,即可获取连续登入7日的用户

    select uid,count(gid) from (select uid, dt, date_sub(dt, row_number() over (partition by uid order by dt)) gid from ulogin where status=1) as u group by uid,gid having count(gid)>=7;

    140、HBase中的数据存储在哪里?以什么格式存储?和Zookeeper什么关系?

    参考答案:

    1.HBase中的所有数据文件都存储在Hadoop HDFS文件系统上。

    2.HBase中数据存储格式:

            HFile: 是HBase中KeyValue数据的存储格式。HFile是Hadoop的二进制格式文件。

           HLog File:是HBase中WAL(Write Ahead Log) 的存储格式,物理上是Hadoop的Sequence File

    3. HBase与Zookeeper之间的关系

            1)hbase meta表的位置存储在Zookeeper

            2)hbase master 利用Zookeeper选举

            3)master与RegionServer通信通过Zookeeper

            4)Zookeeper存储hbase元数据信息

    持续分享有用、有价值、精选的优质大数据面试题

    致力于打造全网最全的大数据面试专题题库

  • 相关阅读:
    Java培训之java8新特性程序代码
    【CC3200AI 实验教程4】疯壳·AI语音人脸识别(会议记录仪/人脸打卡机)-GPIO
    【IVI】15.1.2 系统稳定性优化篇(LMKD Ⅱ)PSI 压力失速信息
    Matlab:绘制日期时间
    CV系列汇总记录【满满的回忆杀】
    Apollo 应用与源码分析:CyberRT-工具与命令
    年薪达不到23.5万全额退款 | 人工智能核心能力培养计划
    docker 命令 相关
    《从菜鸟到大师之路 MySQL 篇》
    Java数据类型转换:强制类型转换+自动类型转换
  • 原文地址:https://blog.csdn.net/dajiangtai007/article/details/126607157