Hive支持索引,但是Hive的索引与关系型数据库中的索引并不相同,比如,Hive不支持主键或者外键. Hive索引可以建立在表中的某些列上,以提升一些操作的效率,例如减少MapReduce任务中需要读取的数据块的数量. 在可以预见到分区数据非常庞大的情况下,索引常常是优于分区的. 博主我推荐各位博文们通过查阅Hive文档对Hive表的索引进行更深入的了解. 需要时刻记住的是,Hive并不像事物数据库那样针对个别的行来执行查询.更新.删除等操作.这些操作依赖高效的索引来实现高性能. Hive是一…
<Spark最佳实战  陈欢>写的这本书,关于此知识点,非常好,在94页. hive里的扩展接口,主要包括CLI(控制命令行接口).Beeline和JDBC等方式访问Hive. CLI和Beeline都是交互式用户接口,并且功能相似,但是语法和实现不同. JDBC是一种类似于编程访问关系型数据库的编程接口. 1.CLI 在UNIX shell环境下输入hive命令可以启用Hive CLI.在CLI下,所有的Hive语句都以分号结束. 在CLI下可以对一些属性做出设置,像是设置底层MapRedu…
这个小知识点,看似简单,用处极大. $ hive --hiveconf hive.cli.print.current.db=true $ hive --hiveconf hive.cli.print.header=true  hive参数的使用 hive > create table t5(name string,${system:user.name}  string); create table t6(name string, ${env:HOSTNAME}  string ,  ${env:…
 说在前面的话 以下三种情况,最好是在3台集群里做,比如,master.slave1.slave2的master和slave1都安装了hive,将master作为服务端,将slave1作为服务端. 以下,是针对CentOS版本的,若是Ubuntu版本,见我的博客 Ubuntu系统下安装并配置hive-2.1.0 hive三种方式区别和搭建 Hive中metastore(元数据存储)的三种方式: a)  内嵌Derby方式 b)  Local方式 c)  Remote方式 1.本地derby 这种…
在一些特定的业务场景下,使用hive默认的配置对数据进行分析,虽然默认的配置能够实现业务需求,但是分析效率可能会很低. Hive有针对性地对不同的查询进行了优化.在Hive里可以通过修改配置的方式进行优化. 以下,几种方式调优的属性. 1.列裁剪 在通过Hive读取数据的时候,并不是所有的需求都要获取表内的所有的数据.有些只需要读取所有列中的几列,而忽略其他列的的数据. 例如,表Table1包含5个列Column1.Column2.Column3.Column4.Column5.下面的语句只会在…
为了对表进行合理的管理以及提高查询效率,Hive可以将表组织成“分区”. 分区是表的部分列的集合,可以为频繁使用的数据建立分区,这样查找分区中的数据时就不需要扫描全表,这对于提高查找效率很有帮助. 分区是一种根据“分区列”(partition column)的值对表进行粗略划分的机制.Hive中的每个分区对应数据库中相应分区列的一个索引,每个分区对应着表下的一个目录,在HDFS上的表现形式与表在HDFS上的表现形式相同,都是以子目录的形式存在. 一个表可以在多个维度上进行分区,并且分区可以嵌套使…
Hive与JDBC示例 在使用 JDBC 开发 Hive 程序时, 必须首先开启 Hive 的远程服务接口.在hive安装目录下的bin,使用下面命令进行开启: hive -service hiveserver &  //Hive低版本提供的服务是:Hiveserver hive --service hiveserver2 &       //Hive0.11.0以上版本提供了的服务是:Hiveserver2 我这里使用的Hive1.0版本,故我们使用Hiveserver2服务,下面我使用…
Hive可以通过实现用户定义函数(User-Defined Functions,UDF)进行扩展(事实上,大多数Hive功能都是通过扩展UDF实现的).想要开发UDF程序,需要继承org.apache.hadoop.ql.exec.UDF类,并重载evaluate方法.Hive API提供@Description声明,使用声明可以在代码中添加UDF的具体信息.在Hive中可以使用DESCRIBE语句来展现这些信息. Hive的源码本身就是编写UDF最好的参考资料.在Hive源代码中很容易就能找到…
不多说,直接上干货! 可以先,从MySQL里的视图概念理解入手 视图是由从数据库的基本表中选取出来的数据组成的逻辑窗口,与基本表不同,它是一个虚表.在数据库中,存放的只是视图的定义,而不存放视图包含的数据项,这些项目仍然存放在原来的基本表结构中.  视图可以被定义为多个表的连接,也可以被定义为只有部分列可见,也可为部分行可见.         视图的作用有: 首先,可以简化数据查询语句 其次,可以使用用户能从多角度看待同一数据 然后,通过引入视图可以提高数据的安全性 最后,视图提提供了一定程度的…
不多说,直接上干货!  Hive还可以把表或分区,组织成桶.将表或分区组织成桶有以下几个目的: 第一个目的是为看取样更高效,因为在处理大规模的数据集时,在开发.测试阶段将所有的数据全部处理一遍可能不太现实,这时取样就必不可少. 第二个目的是为了获得更好的查询处理效率.      桶为了表提供了额外的结构,Hive在处理某些查询时利用这个结构,能给有效地提高查询效率.      桶是通过对指定列进行哈希计算来实现的,通过哈希值将一个列名下的数据切分为一组桶,并使每个桶对应于该列名下的一个存储文件.…