zoukankan      html  css  js  c++  java
  • hive 常见面试题

    (笔者自己做记录)

    1.Hive内外部表的区别
    删除表是否影响外部数据
    2.Hive如何做到权限管理
    hive下可以修改配置后创建用户管理,但是仅仅是为了防止误操而已,如果要真的为了安全操作建议使用
    Kerberos
    3.Hive的数据倾斜和调优
    key分布不均匀造成 去null
    调节参数
    hive.map.aggr=true
    map端聚合,相当于combiner
    hive.groupby.skewindata=true
    4.Hive文件压缩格式有哪些?压缩效率如何
    开启压缩
    set hive.exec.compress.output=true;
    set mapred.output.compress=true;
    set mapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec;
    set io.compression.codec=org.apache.hadoop.io.compress.GzipCodec;
    set mapred.output.compression.type=BLOCK;

    TextFile(压缩方式Gzip,Bzip2 压缩后不支持split)
    SequenceFile-<key,value> (NONE,RECORD,BLOCK!。Record)
    RCFile(存储方式:数据按行分块,每块按列存储。结合了行存储和列存储的优点)
    ORCFile
    (GZIP LZO DefaultCodec snappy)
    5.说说对桶表的理解
    对数据的细化 取模分开存储数据
    6.Hive解析hql转化为MR的执行过程

    、SemanticAnalyzer的主要分析过程:调用analyzeInternal函数
    1)doPhase1过程:主要是将sql语句中涉及到的各种信息存储起来,存到QB中去,供后续调用
    2)getMetaData:这个过程主要是获取元数据信息,主要是sql中涉及到的表到元数据的关联
    3)genPlan:这是最重要的过程之一,主要是生成算子树(operator tree)
    4)optimize:优化,对算子树进行一些优化操作,例如列剪枝等
    5)genMapRedTasks:这个步骤是最关键的步骤,将算子树通过一定的规则生成若干相互以来的MR任务

    7.Hive的分组排序(row_number()),组内TopN
    8.hive有哪些保存元数据的方式,有什么特点
    1、Single User Mode:
    默认安装hive,hive是使用derby内存数据库保存hive的元数据,这样是不可以并发调用hive的,
    这种模式时hive默认的存储模式,。
    2、Multi
    User Mode:
    通过网络连接到一个数据库中,是最经常使用到的模式。假设使用本机mysql服务器存储元数据。这种存储
    方式需要在本地运行一个mysql服务器,并作如下配置(需要将mysql的jar包拷贝到$HIVE_HOME/lib目录下
    )。
    3、Remote Server Mode:
    在服务器端启动一个 MetaStoreServer,客户端利用 Thrift 协议通过 MetaStoreServer 访问元数据
    库。

    9.hive能建多个库吗
    可以
    10.hive的底层怎么与数据库交互的。
    11.hive实现统计的查询语句以及与mr的区别
    12.对于hive你写过哪些UDF函数,作用是干什么的
    13.hive与hbase的区别
    明显
    14.hive中的压缩格式textfile, sequencefile, rcfile, orc的区别
    15.hive的工作原理
    16.编写hive自定义函数,实现oracle数据库中的addmonths函数功能,然后封装到hive函数库中。


    load data local inpath '文件路径' into table t partition(dt="2016-07-25");


    hive自定义函数
    udf步骤:
    1.写一个类继承(org.apache.hadoop.hive.ql.)UDF
    2.覆盖方法eturn evaluate(param...)
    3.打jar包,提交hive服务器
    4.添加到hive资源里面(add jar jar的路径)--->临时的加入的hive的classpath
    5.创建一个临时的函数create temparay function functionName as '自定义类的全类名';
    6.执行相应的操作
    7[可选]、drop 临时函数
    网上有例子:根据生日得到属性和星座

  • 相关阅读:
    实验 3:Mininet 实验——测量路径的损耗率
    福州大学软件工程实践个人编程作业
    实验 2:Mininet 实验——拓扑的命令脚本生成
    初识MinIO
    基础《Go学习笔记》读书笔记——函数
    Linux配置Golang 依赖包安装
    《Linux shell 脚本攻略》第1章——读书笔记
    vscode连接云服务,搭建Python远程开发
    Python多线程
    Python多进程
  • 原文地址:https://www.cnblogs.com/yaohaitao/p/5810710.html
Copyright © 2011-2022 走看看