hive面试题

hive 内部表:加载数据到 hive 所在的 hdfs 目录,删除时,元数据和数据文件都删除
    外部表:不加载数据到 hive 所在的 hdfs 目录,删除时,只删除表结构

(3)分区作用:防止数据倾斜

(4)UDF 函数:用户自定义的函数 (主要解决格式,计算问题 ),需要继承 UDF 类

java 代码实现
class TestUDFHive extends UDF {
public String evalute(String str){
try{
return "hello"+str
}catch(Exception e){
return str+"error"
}

}

} 

(5)sort by和order by之间的区别?

使用order by会引发全局排序;

select * from baidu_click order by click desc;

   使用 distribute和sort进行分组排序

select * from baidu_click distribute by product_line sort by click desc;

  distribute by + sort by就是该替代方案,被distribute by设定的字段为KEY,数据会被HASH分发到不同的reducer机器上,然后sort by会对同一个reducer机器上的每组数据进行局部排序。

 

  sort by的排序发生在每个reduce里,order by和sort by之间的不同点是前者保证在全局进行排序,而后者仅保证在每个reduce内排序,如果有超过1个reduce,sort by可能有部分结果有序。

注意:它也许是混乱的作为单独列排序对于sort by和cluster by。不同点在于cluster by的分区列和sort by有多重reduce,reduce内的分区数据时一致的。 

4. Hive中追加导入数据的4种方式是什么?请写出简要语法

    从本地导入: load data local inpath ‘/home/1.txt’ (overwrite)into table student;
    从Hdfs导入: load data inpath ‘/user/hive/warehouse/1.txt’ (overwrite)into table student;
    查询导入: create table student1 as select * from student;(也可以具体查询某项数据)
    查询结果导入:insert (overwrite)into table staff select * from track_log;

5. Hive导出数据有几种方式?如何导出数据

    用insert overwrite导出方式
        导出到本地:
        insert overwrite local directory ‘/home/robot/1/2’ rom format delimited fields terminated by ‘\t’ select * from staff;(递归创建目录)
        导出到HDFS
        insert overwrite directory ‘/user/hive/1/2’ row format delimited fields terminated by ‘\t’ select * from staff;
    Bash shell覆盖追加导出
    例如:$ bin/hive -e “select * from staff;” > /home/z/backup.log
    Sqoop把hive数据导出到外部

分区

    是指按照数据表的某列或某些列分为多个区,区从形式上可以理解为文件夹,比如我们要收集某个大型网站的日志数据,一个网站每天的日志数据存在同一张表上,由于每天会生成大量的日志,导致数据表的内容巨大,在查询时进行全表扫描耗费的资源非常多。
    那其实这个情况下,我们可以按照日期对数据表进行分区,不同日期的数据存放在不同的分区,在查询时只要指定分区字段的值就可以直接从该分区查找

分桶

    分桶是相对分区进行更细粒度的划分。
    分桶将整个数据内容安装某列属性值得hash值进行区分,如要按照name属性分为3个桶,就是对name属性值的hash值对3取摸,按照取模结果对数据分桶。
    如取模结果为0的数据记录存放到一个文件,取模为1的数据存放到一个文件,取模为2的数据存放到一个文件
 

  • 0
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值