Hive问题

1. Hive基本概念

数据仓库工具,底层存储为HDFS,类SQL的查询,转化为mapreduce。执行程序运行在Yarn上

2. hive 内部表和外部表的区别?

Hive创建内部表时,会将数据移动到数据仓库指向的路径。创建外部表时,仅记录数据所在的路径,不对数据的位置做任何改变。
删除内部表的时候会删除数据和元数据,删除外部表的时候只会删除元数据

4. Hive 有哪些方式保存元数据,各有哪些优缺点?

存储在derby或mysql。mysql可支持多客户端访问

5. hive中order by、distribute by、sort by和cluster by的区别和联系

不懂!

6. hive 中的压缩格式 RCFile、 TextFile、 SequenceFile 各有什么区别?

  • TextFile:默认格式,数据不做压缩,磁盘开销大,数据解析开销大
  • SequenceFile:Hadoop API提供的一种二进制文件支持,使用方便,可分割,可压缩,支持三种压缩,NONE,RECORD,BLOCK。
  • RCFILE:是一种行列存储相结合的方式。首先,将数据按行分块,保证同一个 record 在同一个块上,避免读一个记录读取多个block。其次,块数据列式存储,有利于数据压缩和快速的列存取。数据加载的时候性能消耗大,但具有较好的压缩比和查询响应。

7. hive开窗函数有哪些?

sum() over(partition by id order by time
rows between unbounded preceding and current time)
max()...
avg()...
row_number()
rank()
dense_rank()

8. row_number(),rank(),dense_rank的区别

  • row_number(), 全部都排序,相同的也会排序 1 2 3 4 5
  • rank(), 相同的名次一样,会留空一位 1 2 2 4 5
  • dense_rank 相同的名次一样,不留空 1 2 2 3 4

9. hive行转列和列转行如何实现?

  • 行转列lateral view explode(split(id,','))
  • 列转行concat_ws(',',concat_list(id))

10. UDF,UDTF,UDAF是什么?如何实现?

UDF 自定义函数 继承GenericUDF
UDTF 一对多 GenericUDTF
UDAF 多对一 GenericUDAF

11. Hive和Mysql的区别?

除了都可以用sql语言外,他们俩就没什么共同点了。
Hive为数据仓库工具,不存储数据。Mysql存储数据
Hive数据规模可以远大于Mysql
Hive查询效率较低。Mysql查询性能较高
Mysql支持事务,Hive不支持

12. hive的日期处理函数

1)日期函数UNIX时间戳转日期函数:from_unixtime(1323308943,'yyyyMMdd')
2)当前UNIX时间戳函数: unix_timestamp('2016-08-25 13:02:03')
unix_timestamp('20160825 13:02:03','yyyyMMdd HH:mm:ss')
3)日期时间转日期函数: to_date('2016-12-08 10:03:01')
4)日期比较函数: datediff('2016-12-08','2016-12-02')
5)日期增加:date_add('2016-12-08',10)
6)日期减少:date_sub('2016-12-08',10)
7)根据格式整理日期:date_format(str,’yyyy’)

13. hive存储

Hive支持的存储数 据 的格式主要有 TEXTFILE 、 SEQUENCEFILE、 ORC、 PARQUET。
TEXTFILE和 SEQUENCEFILE 的存储格式都是基于行存储的;
ORC和 PARQUET 是基于列式存储的。
在实际的项目开发当中,hive 表的数据存储格式一般选择: orc 或 parquet 。压缩方式一般选择 snappy lzo。

你可能感兴趣的:(Hive问题)