这个小知识点,看似简单,用处极大. $ 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:…
列式数据库,从数据存储方式上有别于行式数据库,所有数据按列存取. 行式数据库在做一些列分析时,必须将所有列的信息全部读取出来 而列式数据库由于其是按列存取,因此只需在特定列做I/O即可完成查询与分析,效率节省90%. 此外,列式数据库在每列上还有专门的列压缩算法进一步提高数据库性能,这是行式数据库不具备的. 比如3台机器,每份数据备份3份. 行式数据库   HBase(列式数据库)…
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…
 说在前面的话 以下三种情况,最好是在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在处理某些查询时利用这个结构,能给有效地提高查询效率.      桶是通过对指定列进行哈希计算来实现的,通过哈希值将一个列名下的数据切分为一组桶,并使每个桶对应于该列名下的一个存储文件.…
Hive的操作与传统关系型数据库SQL操作十分类似. Hive主要支持以下几类操作: DDL 1.DDL:数据定义语句,包括CREATE.ALTER.SHOW.DESCRIBE.DROP等. 详细点,就是 Hive支持大量SQL数据定义语言(Data Definition Language,DDL)中的现有功能,包括以下各种语句: CREATE DATABASE/SCHEMA,TABLE,VIEW,FUNCTION,INDEX DROP DATABASE/SCHEMA,TABLE,VIEW,IN…
HBase里的4维坐标系统(第一步定位行键   ->   第二步定位列簇  ->  第三步定位列修饰符   ->  第四步定位时间戳) HBase里的4维坐标系统(第一步定位行键   ->   第二步定位列簇  ->  第三步定位列修饰符   ->  第四步定位时间戳)   行键,相当于第一步级索引. 列簇,相当于第二步级索引. 列修饰符,相当于第三步级索引. 时间戳,相当于第四步级索引.…
hive里的索引是什么? 索引是标准的数据库技术,hive 0.7版本之后支持索引.Hive提供有限的索引功能,这不像传统的关系型数据库那样有“键(key)”的概念,用户可以在某些列上创建索引来加速某些操作,给一个表创建的索引数据被保存在另外的表中. Hive的索引功能现在还相对较晚,提供的选项还较少.但是,索引被设计为可使用内置的可插拔的java代码来定制,用户可以扩展这个功能来满足自己的需求. 当然不是说有的查询都会受惠于Hive索引.用户可以使用EXPLAIN语法来分析HiveQL语句是否…
说在前面的话 hive的正则表达式,是非常重要!作为大数据开发人员,用好hive,正则表达式,是必须品! Hive中的正则表达式还是很强大的.数据工作者平时也离不开正则表达式.对此,特意做了个hive正则表达式的小结.所有代码都经过亲测,正常运行. 1.regexp 语法: A REGEXP B 操作类型: strings 描述: 功能与RLIKE相同 select count(*) from olap_b_dw_hotelorder_f where create_date_wid not re…
hive与环境的交互,算是一个小知识点,但掌握不菲! 如何在hive里,也达到这样呢? 不需要这样啦,因为,hive是建立在hadoop之上,启动hive,相当于,就是,hadoop jar ** hive > dfs -ls /;      可以看看这篇,hive与依赖环境的交互…
Hive文件存储格式包括以下几类: 1.TEXTFILE 2.SEQUENCEFILE 3.RCFILE 4.ORCFILE 其中TEXTFILE为默认格式,建表时不指定默认为这个格式,导入数据时会直接把数据文件拷贝到hdfs上不进行处理. SEQUENCEFILE,RCFILE,ORCFILE格式的表不能直接从本地文件导入数据,数据要先导入到textfile格式的表中, 然后再从表中用insert导入SequenceFile,RCFile,ORCFile表中. 更多用法,一定要去看官网啊!!!…
相当一部分人,容易忽略hive脚本,其实,这在生产环境里,是非常重要的! $ hive -e "show tables" $ hive -e "show tables " >> aa $ hive -e "show tables " > aa $ hive -S -e "show tables"  >a  新建hql文件,写入show tables; $ hive -f hql $ hive -i hq…
hdfs里的文件下载 可以,通过hadoop distributed system来下载,而且速度非常之快.涨知识!!! 或者,通过命令行的方式,也可以! ***********************************上传和下载.类似于一个网盘.*********************************…
在下面这篇博文里,我给各位博客们,分享了创建HBase表,但这远不止打好基础. HBase编程 API入门系列之create(管理端而言)(8) 在关系型数据库里,表的高表和宽表是不存在的.在如HBase这样的NoSQL里,才是存在. HBase里的长表VS宽表VS窄表 在不同场景,结合使用到底是高表还是宽表. 高表有高表的好处,宽表有宽表的优势. 起始行键是1001,结束行键是10010,则可查出如下图框出部分结果. 当然,也可以根据其他的查询条件,来查询.…
在下面这篇博文里,我给各位博客们,分享了创建HBase表,但这远不止打好基础. HBase编程 API入门系列之create(管理端而言)(8) 在关系型数据库里,表的高表和宽表是不存在的.在如HBase这样的NoSQL里,才是存在. HBase里的长表VS宽表VS窄表 HBASE宽表应用很多   比如BBS,可以用帖子的URL地址作为ROWKEY保存,而后面的每一个回复,作为单独的COLUMNS,回复越多,COLUMNS就越多,表就变宽了.COLUMNS的qualifier名称设计很简单 假设…
首先,要区分,HRegion服务器包含两大部分:HLog部分和HRegion部分 HBase里的HRegion服务器  HBase里的HRegion 当表的大小超过设置值的时候,HBase会自动将表划分为不同的区域,每个区域包含所有行的一个子集.对用户来说,每个表是一堆数据的集合,每个表靠主键来区分.从物理上来说,一张表是被拆分成了多块,每一块就是一个HRegion. (注意,用户通过一系列HRegion服务器获取这些数据.一台机器上一般只运行一个HRegion服务器,而且每一分区段的HRegi…
Store在HBase里称为HStore.HStore包括MemStore和StoreFiles.…
HBase里的4维坐标系统(第一步定位行键   ->   第二步定位列簇  ->  第三步定位列修饰符   ->  第四步定位时间戳) HBase里的4维坐标系统(第一步定位行键   ->   第二步定位列簇  ->  第三步定位列修饰符   ->  第四步定位时间戳) 实际上,HBase的存储值,即一个键值对,是   { row key,column family,column name,timestamp }   ->  value   行键,相当于第一步级索…
有时候啊,HBase表的设计方案通常,还会考虑如下一些因素,当然,这只是考虑范围里的部分呢. 更多的行还是更多的版本?后者使用了HBase自带的功能.但是需要在列簇中定义最大版本数,这样做可能有风险.最好的做法是版本使用多行存储,这需要把时间戳作为行键的一部分,数据检索模式定义了时间戳如何定义为行键的一部分以及应该位于行键的一部分. 更多行或是每行包含更多列?HBase支持每行包含数百万列,并且每一列都可以有列标识. 以行为列的设计?这是一种介于多行和多列的折衷方案.我们可以举一个日志数据库的例…
这个,很简单,但凡是略懂大数据的,就很清楚,不多说,直接上图.…
需要遵循以下步骤: 1.客户端和Zookeeper集群建立连接.在这之前客户端需要获得一些信息(可以从HBase配置文件中读取或是直接指定).客户端从Zookeeper集群中读取-ROOT-表的位置信息.这是客户端发起的第一次查询. 2.客户端连接-ROOT-表,并得到.META.表的位置信息.这是客户端发起的第二次查询. 3.客户端连接.META.表,并下载分区列表和它们的位置.这是客户端发起的第三次查询. 4.客户端使用从.META.表下载的信息直接连接分区服务器中的分区并操作数据.在这个过…
HBase集群要求每个节点的时间必须同步.HBase对于节点的时间扭曲(time skew)容忍度很低(这和HDFS是不一样的). 这主要是因为HBase需要使用系统时间来产生时间戳.如果系统时间不同步的话,那么每个节点产生的时间戳差异就会比较大,这就违背了时间戳设计的初衷. HBase对于节点间的时间扭曲的容忍度在秒级,即如果HBase发现节点间的时间差异已经有几十秒时会拒绝启动.节点间时间同步的方法是建立NTP服务器,然后让所有的节点和NTP服务器同步. hadoop-2.6.0.tar.g…
这个,很简单,但凡是略懂大数据的,就很清楚,不多说,直接上图.…
这个,很简单,但凡是略懂大数据的,就很清楚,不多说,直接上图.…