Hive学习总结

本文为Hive学习总结

一、产生背景

1)MapReduce编程的不便性
2)HDFS上的文件缺少Schema

二、什么是Hive

Hive是构建在Hadoop上的数据仓库,最初用于解决海量结构化的日志数据统计问题

官网解释:
The Apache Hive ™ data warehouse software facilitates reading, writing, and managing large datasets residing in distributed storage using SQL. Structure can be projected onto data already in storage. A command line tool and JDBC driver are provided to connect users to Hive.

三、为什么使用Hive

1)简单,容易上手(提供了类SQL查询语言HQL)
2)为超大数据集设计的计算/存储扩展能力(MR,HDFS)
3)统一的元数据管理(可与Presto/Impala/SparkSQL等共享数据)

Hive定义了一种类SQL查询语言:HiveQL,通常用于进行离线数据处理,底层的执行引擎:MapReduce,Tez,Spark

压缩:GZIP,LZ0,Snappy,BZIP2
存储:TextFile,SequenceFile,RCFile,ORC,Parquet

四、关于Hive

1)元数据

  • Hive的表在逻辑上由存储的数据和描述表中数据形式的相关元数据组成
  • metastore是Hive元数据的集中存放地,metastore包括两部分:服务和后台数据的存储
  • 默认情况下,metastore服务和Hive服务运行在同一个JVM中,它包含了一个内嵌的以本地磁盘作为存储的Derby数据库实例(内嵌metastore)
  • 当每次只有一个内嵌Derby数据库可以访问某个磁盘上的数据库文件,这就意味着一次只能为每个metastore打开一个Hive会话,不支持多会话。若要支持多会话,需要配置一个独立的数据库(通常为MySQL)(本地metastore),因为metastore服务和Hive运行在同一个进程中,但连接的是在另一个进程中运行的数据库

2)托管表和外部表

  • 托管表:Hive负责管理数据,即Hive把数据移入它的仓库目录(warehouse directory)
  • 外部表:Hive到仓库目录外的位置访问数据

区别:

  • 托管表加载数据时,Hive把数据移到仓库目录,丢弃表时,元数据和数据会被一起删除
  • 外部表加载数据时,Hive不会把数据移到仓库目录,丢弃表时,只会删除元数据,不会删除数据

场景:

  • 如果所有处理都由Hive完成,应使用托管表
  • 如果用Hive和其他工具来处理同一个数据集,应使用外部表(普遍用法为把存放在HDFS的初始数据集用作外部表进行使用)
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Hive中进行日期格式转换有多种方法。以下是几种常用的方法: 1. 使用from_unixtime函数将日期格式从yyyyMMdd转换为yyyy-MM-dd: ``` select from_unixtime(unix_timestamp('20211022','yyyyMMdd'),"yyyy-MM-dd"); ``` 这将返回转换后的日期,例如:2021-10-22。\[1\] 2. 如果数据库中存储的是字符串日期,格式为"yyyy-MM-dd hh:mm:ss",可以使用substr函数截取日期部分: ``` select substr('2021-10-22 17:34:56',1,10); ``` 这将返回截取后的日期,例如:2021-10-22。\[2\] 3. 可以使用to_date函数将字符串强制转换为日期: ``` select to_date('2021-10-22 17:34:56'); ``` 这将返回转换后的日期,例如:2021-10-22。\[2\] 4. 可以使用date_format函数通过指定的格式将日期转换为字符串: ``` select date_format('2021-10-22 17:34:56','yyyy-MM-dd'); ``` 这将返回转换后的日期,例如:2021-10-22。\[2\] 5. 如果要将时间戳转换为日期,可以使用from_unixtime函数: ``` select from_unixtime(unix_timestamp('timestamp_value'),'yyyy-MM-dd'); ``` 这将返回转换后的日期,其中'timestamp_value'是时间戳的值。\[3\] 请根据你的具体需求选择适合的方法进行日期格式转换。 #### 引用[.reference_title] - *1* *2* [Hive中各种日期格式转换方法总结](https://blog.csdn.net/zhangtingduo/article/details/125293714)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Hive学习(8)时间日期格式转换&获取当前日期的几种形式](https://blog.csdn.net/Dreamy_zsy/article/details/116738832)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值