首页 > > > Hive常见面试题1.0
class TestUDFHive extends UDF{
public String evalut(String str){
try{
return "hello" + str
}catch(Exception e){
return str + "error"
}
}
}排序优化:sort by效率高于order by
分区:使用静态分区(statu_date="20160516",location="beijing"),每个分区对应hdfs上的一个目录,减少job和task数量;
使用表连接操作,解决group by数据倾斜问题
设置hive.groupby.skewindata=true,那么hive会自动负载均衡,叫文件合并成大文件
使用UDF或UDAF函数:http://www.cnblogs.com/ggjucheng/archive/2013/02/01/2888819.html
eg:将Hive统计分析结果导入到MySQL数据库表中——sqoop操作
可以使用flume/FTP/Kettle/DataX。。。
根据业务自行定义。。。。。
共同点:
1.hbase 与 hive 都是架构在hadoop之上的。都是用hadoop作为底层存储
区别:
2.Hive是建立在Hadoop之上为了减少MapReduce Jobs编写工作的批处理系统,HBase是为了支持弥补Hadoop对实时操作的缺陷的项目
3.想想你在操作RMDB数据库,如果全表扫描,就用Hive+Hadoop/Spark/flink,如果是索引访问,就用HBase+Hadoop/Spark/Flink
4.Hive query就是MapReduce jobs可以从5分钟到数小时不止,HBase是非常高效的,肯定比Hive高效的多。
5.Hive本身不存储和计算数据,它完全依赖于HDFS和MapReduce,Hive中的表纯逻辑。
6.hive是物理表,不是逻辑表,提供一个超大的内存hash表,搜索引擎通过它来存储索引,方便查询操作
7.hbase是列存储
8.hdfs作为底层存储,hdfs是存放文件的系统,而Hbase负责组织文件
9.hive需要到hdfs存储文件,需要用到MapReduce计算框架
三种:内存数据库 derby—小,不常用。
本地mysql/常用远程段Mysql
Hive创建内部表时,会将数据移动到数据仓库指向的路径,若创建外部表,仅记录数据所在的路径,不对数据的位置做任何改变。在删除表的时候,内部表的元数据和数据会被一起删除,而外部表只删除元数据,不删除数据,这样外部表相对来说更加安全些,数据组织也更加灵活,方便共享源数据。。
hive有一套自己的sql解析引擎,称作 metastore ,存储在mysql或者derby数据库中,可以将sql语句转化为mapreducejob任务执行
metastore是一套映射工具,将sql语句转换成对应的job任务区进行执行
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/818/viewspace-3158283/ ,如需转载,请注明出处,否则将追究法律责任。