http://hadoop.apache.org/hive/
把这里里面的东西看好,你也能成为半个hive的高手。
Hive体系结构的目的就是:low-latency(低延迟),batch-oriented(基于批处理的)

It began its life at Facebook processing large amount of user and log data. 
哈哈,Hive之所以能火起来,就是因为牛逼企业使用了并提高了效率或者较小了成本。
Hive能火,就是因为FaceBook使用他的原因。

需要注意的是,我们可以使用JDBC于Hive建立链接。
Hive的搭建需要jdk1.6及以上和Hadoop0.17及以上。
只有安装好Hadoop并且启动了,Hive才能正常运行。 
此外,必须开启Mysql等数据库服务,Hive才能正常运行。
Hive将“元数据”存储在一个标准的关系型数据库当中。
与Hive一并打包发布的还包括一个Derby的数据库。Derby是在客户端安装和运行的。
当你想要不同的用户使用相同的元数据的时候,那么请你设定你的模式为multi-user。

Cannot find hadoop installation: $HADOOP_HOME must be set or hadoop must be in the path
FIX by modified the profile file:
[root@master bell]# vim /etc/profile
export HADOOP_HOME=/home/bell/software/hadoop-0.20.2
export PATH=/home/bell/software/hadoop-0.20.2/hive-0.7.1/bin:$PATH

hive-site.xml                    使用Hive会涉及到数据库的操作,所以必须要对数据库的链接进行相应的配置
主要包括:
hive.metastore.local

javax.jdo.option.ConnectionURL
javax.jdo.option.ConnectionDriverName

javax.jdo.option.ConnectionUserName
javax.jdo.option.ConnectionPassword

这五个信息是一般都要进行配置的

///
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="http://mazd1002.blog.163.com/blog/configuration.xsl"?>
<configuration>
 <property>
      <name>hive.metastore.local</name>
      <value>true</value>
  </property>

<property>
      <name>javax.jdo.option.ConnectionURL</name>
      <value>jdbc:mysql://localhost/metastore_db?characterEncoding=UTF-8</value>
  </property>

<property>
      <name>javax.jdo.option.ConnectionDriverName</name>
      <value>com.mysql.jdbc.Driver</value>
  </property>

<property>
      <name>javax.jdo.option.ConnectionUserName</name>
      <value>buaa</value>
  </property>

<property>
       <name>javax.jdo.option.ConnectionPassword</name>
       <value>qwe123</value>
       <description>password to use against metastore database</description>
  </property>
</configuration>
/

jpox.properties必须包括如下的一些基本配置信息:
/
javax.jdo.option.ConnectionDriverName=com.mysql.jdbc.Driver
javax.jdo.option.ConnectionURL=jdbc:mysql://localhost/metastore_db
javax.jdo.option.ConnectionUserName=buaa
javax.jdo.option.ConnectionPassword=qwe123
/

mysql
/
GRANT ALL PRIVALEGES ON metastore_db.*(数据库) to 'bell'@'localhost'(用户名) identified by '123456'(密码);
/

/etc/profile
/
export HADOOP_HOME=/home/bell/software/hadoop-0.20.2
export PATH=/home/bell/software/hadoop-0.20.2/hive-0.7.1/bin:$PATH
/

Hive Build-in aggregate functions
https://cwiki.apache.org/Hive/languagemanual-udf.html

hive> SELECT * FROM cite LIMIT 10;
OK
NULL    NULL
3858241 956203
3858241 1324234
3858241 3398406
3858241 3557384
3858241 3634889
3858242 1515701
3858242 3319261
3858242 3668705
3858242 3707004hive> 
Time taken: 0.17 seconds
//这个传统意义上的sql查询有什么区别?难道仅仅是效率高了?我没有看到Hive有什么过人之处阿。看下面:
 map = 0%, reduce =0%
 map = 12%, reduce =0%
 map = 25%, reduce =0%
 map = 30%, reduce =0%
 map = 34%, reduce =0%
 map = 43%, reduce =0%
 map = 53%, reduce =0%
 map = 62%, reduce =0%
 map = 71%, reduce =0%
 map = 75%, reduce =0%
 map = 79%, reduce =0%
 map = 88%, reduce =0%
 map = 97%, reduce =0%
 map = 99%, reduce =0%
 map = 100%, reduce =0%
 map = 100%, reduce =67%
 map = 100%, reduce =100%
Ended Job = job_200908250716_0001
OK
16522439
Time taken: 85.153 seconds
Hive调用Hadoop进行分布式计算,处理这么大的数据,仅仅花费了85.153秒的时间。
最重要的是:Hive的使用者跟不需要知道Hadoop是怎么工作的……很神奇的一件事情,他只需要按照类似SQL的方法来写就行。

hive> SELECT COUNT(1) FROM cite;

Relational databases use indexes on columns to speed up queries on those columns.
Hive, instead, uses a concept of partition columns, which are columns whose values
would divide the table into separate partitions. 
传统关系型数据库通过在列上加索引来提高查询的效率。Hive却不是这样。Hive使用"分区列 (partition columns)"的概念来提高检索效率。
分区列(partition columns):指的是一个表中那些可以将这个表进行拆分的列。
example, a state column would partition a table into 50 partitions, one for each state.
/user/hive/warehouse/users/date=20090901/state=CA
/user/hive/warehouse/users/date=20090901/state=NY
/user/hive/warehouse/users/date=20090901/state=TX
...
/user/hive/warehouse/users/date=20090902/state=CA
/user/hive/warehouse/users/date=20090902/state=NY
/user/hive/warehouse/users/date=20090902/state=TX
This is because Hive physically stores different partitions in different directories. (Hive存储数据的特点)
设计思想:Hive will still avoid a full scan of all data in a table.
Hive总是想办法避免进行数据的全扫描。

除了patition columns的概念外,Hive还有一个很重要的概念就是:buckets
buckets提供了一个高效查询方法,他在随机数据样本方面效果明显。
 Bucketing divides data into a specified number of files based on the hash of the bucket column. If we specify 32 buckets based on user id in our users table, the full file structure for our table in Hive will look like /user/hive/warehouse/users/date=20090901/state=CA/part-00000
...
/user/hive/warehouse/users/date=20090901/state=CA/part-00031
/user/hive/warehouse/users/date=20090901/state=NY/part-00000
...
/user/hive/warehouse/users/date=20090901/state=NY/part-00031
/user/hive/warehouse/users/date=20090901/state=TX/part-00000
...
//
哈哈,聪明的人都应该反应过来,这样一划分,我们的检索仅仅需要对其中的某个part-000***进行操作,查询数据量肯定是下降的,那么检索的效率肯定是上升的。Hive的高明(核心)之处就是将海量数据大数据进行合理的划分、拆分,从而减小检索的范围,提高检索的效率。
 Hive can run a query on 1/32 of all the users in a partition by using only the data in part-00000, without having to even read the other files. 
从以上的运行数据可以看出,执行一个查询只需要对数据的1/32进行查询,根本不需要读取其他文件。

那么现在就有个问题,buckets的数量设置为多少比较合适呢?
看下面:
/user/hive/warehouse/users/date=20090901/state=NY/part-00000: 为一个sample
通常我们sample的大小为user base的3%。
我目前还不知道这样的数据是如何得出来的,但有一点可以肯定,sample的大小既不能太大(不方便用户从sample中检索),同时也不能太小(不方便Hadoop进行运算),必须取一个大小对双方都比较合适的数值。

HIVE Leaning相关推荐

  1. 史上最详细大数据基础知识

    # **1___Hive** ## 0.0.hive基本命令 ```sql [1.分区表] --创建分区 alter table table_name add partition(分区字段='分区值' ...

  2. 2021年大数据Hive(十二):Hive综合案例!!!

    全网最详细的大数据Hive文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 系列历史文章 前言 Hive综合案例 一.需求描述 二.项目表的字段 三.进 ...

  3. 2021年大数据Hive(十一):Hive调优

    全网最详细的大数据Hive文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 系列历史文章 前言 Hive调优 一.本地模式 1.空key处理 二.SQL ...

  4. 2021年大数据Hive(九):Hive的数据压缩

    全网最详细的大数据Hive文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 系列历史文章 前言 Hive的数据压缩 一.MR支持的压缩编码 二.压缩配置 ...

  5. 2021年大数据Hive(八):Hive自定义函数

    全网最详细的Hive文章系列,强烈建议收藏加关注! 后面更新文章都会列出历史文章目录,帮助大家回顾知识重点. 目录 系列历史文章 前言 Hive自定义函数 一.概述 1.UDF(User-Define ...

  6. 2021年大数据Hive(七):Hive的开窗函数

    全网最详细的Hive文章系列,强烈建议收藏加关注! 后面更新文章都会列出历史文章目录,帮助大家回顾知识重点. 目录 系列历史文章 前言 Hive的开窗函数 一.窗口函数 ROW_NUMBER,RANK ...

  7. 2021年大数据Hive(五):Hive的内置函数(数学、字符串、日期、条件、转换、行转列)

    全网最详细的Hive文章系列,强烈建议收藏加关注! 后面更新文章都会列出历史文章目录,帮助大家回顾知识重点. 目录 系列历史文章 前言 Hive的内置函数 一.数学函数 1. 取整函数: round ...

  8. 2021年大数据Hive(四):Hive查询语法

    全网最详细的Hive文章系列,强烈建议收藏加关注! 后面更新文章都会列出历史文章目录,帮助大家回顾知识重点. 目录 系列历史文章 前言 hive查询语法 一.SELECT语句 1.语句结构 2.全表查 ...

  9. 2021年大数据Hive(三):手把手教你如何吃透Hive数据库和表操作(学会秒变数仓大佬)

    全网最详细的Hive文章系列,强烈建议收藏加关注! 后面更新文章都会列出历史文章目录,帮助大家回顾知识重点. 目录 系列历史文章 前言 Hive数据库和表操作 一.数据库操作 1.创建数据库 2.创建 ...

最新文章

  1. android imageview 的常用属性,android imageview scaletype属性
  2. Android AudioPolicyService和AudioPolicyManager
  3. NoSQL 数据库系统对比
  4. iOS 9: UIStackView入门
  5. python知识点1
  6. BestCoder Round #87 1003 LCIS[序列DP]
  7. 如何判断一个进程已经完成初始化?
  8. Vue学习笔记(利用网易云API实现音乐播放器 实例)
  9. JavaScript函数(二)回调函数
  10. 前端性能优化gzip压缩
  11. 离线学校计算机协会工作计划,计算机协会(社团)各月工作总结及工作计划.docx...
  12. Java对象数组的初始化
  13. 图形界限命令在命令行输入_设置图形界限的命令为在命令行输入
  14. 由抢课所引发的对未来的焦虑和暂时能想到的一些方法
  15. 宝塔BT面板专业版(付费)和免费版有什么区别?
  16. Java实现手机验证码----阿里云
  17. 总结下自己的入门学黑之路
  18. 我的物联网大学【第四章】:江湖人物志之初创团队
  19. Qt Creator5.7安卓开发环境搭建
  20. 95后腾讯T3-2 晒出工资单:狠补了这个,真香…

热门文章

  1. 福昕PDF阅读器中文全面增强版6.0
  2. mybatis批量处理数据的方式
  3. 电脑创建WiFi 软件
  4. 超融合和虚拟化的区别
  5. myeclipse6.5 注册机
  6. 【一起读论文系列1】基于压缩感知的语音编解码方向研究
  7. 他们不是配角--罗惠   文 / 王芥(转的)
  8. Spring data JPA -针对一对多关系中,分页查询一的一方部分,但查询条件中有多的一方参数
  9. jakarta.servlet.Filter is in unnamed module of loader java.net.URLClassLoader去除
  10. 秋季是掉头发的季节,怎么做才能少掉点