HIVE
Hadoop:map 与 reduce 阶段麻烦,效率低
通过把复杂的MR编程,简化为HQL的使用,可以最大限度地减少程序员地学习成本。
Hive是一个构建在Hadoopsha能够的数据仓库平台。【易学难精】
Hive和传统关系型数据库地功能性差异:HIVE是以数据存储优先,而关系型数据库是以数据查询效率优先。
【Hadoop整个生态圈都是Apache地产品】
【1】Hive的创建数据库的本质:创建对应的文件夹;将数据文件加载到服务器上。
【2】分区、分桶的概念
【3】使用HIVE:一般把HIVE作为增量表,进行数据归档。保存到HIVE数据,通常需要加一个时间戳,用于标明数据的批次。
【4】用HIVE一定要用到队列。
数据操作:
【1】sqoop:数据迁移工具
【2】消息队列:kafka,rabitmq
安装Hive
【1】首先需要有MYSQL之类地关系型数据库
【2】要有Hadoop集群
【3】务必仔细检查配置【后续配置步骤】
[4]授权!创建路径
【5】Hiveservice2这个服务:是提供给JDBC访问地。
---修改完配置一定要重新启动。
Hive地数据类型
【1】int
【2】String
【3】date
【4】double
建库和建表
【1】实际上在HDFS当中,创建了对应的目录
【2】数据需要上传;上传数据文件到对应库和表地目录下
【3】HIVE地查询,本质哈市MR执行
【4】全表扫描和需要进行分组过滤地,都需要。
--全表扫描,ex:count(*)
--排序,ex order by sal
--分组,ex:group by deptno
特例:limit 0,2 不需要 MR
总结:只需要MAP阶段就可以处理完的,不需要MR
【5】HIVE当中,关联查询:
--Hive是没有主外键的
--内联:inner join
--外联:left join / right join
总结:任何情况下,只要执行了表关联,就一定会有MR操作。
【6】分区、分桶。
【7】HIVE是不可以修改数据的,但是可以插入数据,插入的数据,不是在原来文件的基础上追加,而是用新的文件来进行保存。
【8】使用HIVE:一般把HIVE作为增量表,进行数据归档,保存到HIVE里的数据,通常需要加一个时间戳【用于标明:数据批次】。
【9】用HIVE一定要用到队列。
【10】数据仓库一般都是通过异步来处理的。
原理部分还需要深入
经典:
去除左右空格——
public String trim() {
int len = value.length;
int st = 0;
char[] val = value; /* avoid getfield opcode */while ((st < len) && (val[st] <= ' ')) {
st++;
}
while ((st < len) && (val[len - 1] <= ' ')) {
len--;
}
return ((st > 0) || (len < value.length)) ? substring(st, len) : this;
}
授权 777