网站制作备案上线流程,长沙优化网站价格,数字营销包括哪些方面,做网站前必须设计原型吗1. 怎么理解Hive
Hive不能理解成一个传统意义上的数据库#xff0c;应该理解成一个解决方案。 是Hadoop在hdfs和mapreduce之后才出现的一个结构化数据处理的解决方案。 Hdfs解决了大数据的存储问题#xff0c;mapreduce解决了数据的计算问题。 一切似乎很美好。 但是使用成本…1. 怎么理解Hive
Hive不能理解成一个传统意义上的数据库应该理解成一个解决方案。 是Hadoop在hdfs和mapreduce之后才出现的一个结构化数据处理的解决方案。 Hdfs解决了大数据的存储问题mapreduce解决了数据的计算问题。 一切似乎很美好。 但是使用成本太高
SQL语言的发明使得数据处理的门槛减低了很多。 Hive就是为了用户使用sql来处理数据
总结大数据背景下hdfs看起来想一个无限大的存储空间mapreduce的思想充分利用所有的cpu和内存。Hive使得用户可以像单机时代一样用sql来处理数据。
概念回顾: SQLStructured Query Language也就是结构化的查询语言。 所以hive中的一个核心模块就是metastore 用来存储结构化的信息也就是“数据的数据”其实也是借用了传统文件系统的“metaData”元数据的概念。 一般会存有多少列每一列是什么样的数据结构这样的数据。 然后hive的执行引擎会将sql进行语法分析生成语法树然后生成mapreduce程序进行数据的计算工作。
2. Hive背景知识
了解hive之前要了解HDFSmapReduce的概念
HDFS分布式文件系统 说白了也是一层中间件不用自己筛选服务器磁盘且有备份容错机制
MapReduce分布式计算引擎鼻祖 分治每一个计算器只计算小部分的 规约将小部分的计算结果再次联合 这就是mapReduce的灵魂
Hive是在前两者之后出现的而在这之前处理大数据都是用的mapReduce自己进行编程。 但是这样的做法效率太低人们还是更加习惯使用sql来处理数据
最初的hive就仅仅是提供了一个sql转成mapReduce的解释器
传统的数据库数据的存储和数据引擎是一体的。 Hive存储和引擎分离
Hive特点如下
1.将存储到HDFS的数据给套上一层表结构。2.然后请分布式计算引擎来帮忙写入和查询mapReduceTezSpark。3.Hive自己仅仅是维护了一个metastore服务和hiveServer服务前者提供数据的表结构关系后者对外提供查询和写入的接口。4.Hive存储数据的数据结构是可选的txt、orc等除txt外都是列式存储而传统的数据库都是行式存储。5.没有索引或者粗粒度的索引
实时计算And离线计算 实时计算是指对输入数据进行近乎即时的处理和分析以获取当前状态或预测未来趋势。这种计算方式要求系统能够在数据产生后立即进行处理并将结果迅速反馈给相关系统或用户。实时计算通常用于需要高时效性和高准确性的场景
离线计算则是指对数据进行非实时、批量式的处理和分析。这种计算方式通常用于对历史数据进行深度挖掘和分析以发现数据中的模式和趋势为业务决策提供支持。离线计算不需要即时性但要求计算结果的准确性和全面性。
3. HQL之DQL
Select
From
Where 可以使用hive支持的任何函数和运算符但聚合函数除外
Group byselect字段要么是group by分组的字段要么是被聚合函数应用的字段聚合函数的本质就是多进一出。
Havingwhere是没有办法和聚合函数一起使用的having子句可以让我们筛选分组后 的数据having中可以使用聚合函数
Order by全局排序强烈建议limit和order by一起使用避免行数过大如果设置 了hive.mapred.mode为strict时使用不带limit的order by会有异常。
Limit用于限制select返回的行数只给一个参数代表最大行数给两个参数代表与 第一行的偏移量。用union注意 如果要将order by、sort by、cluster by、distribute by、limit用于单个select中需要括号例如 如果要应用于整个union查询要放在最后一个之后 CTE表达式 With 假名 as select子查询 Select * From 假名 其实就是引导定义支持链式 With q1 as select子查询 Q2 as select子查询 Select * From 使用q1和q2 内连接 Inner join 或者 join 或者 直接不写 两个表的交集 左外连接 Outer可以省略 左表全右表可能不全而且右边可以为null 全外连接 Outer可以省略 两边都可以为null就是并集两边都全并且去重 就相当于左右外连接同时使用 左半开连接 Left semi join 但是结果只会返回左边的字段并且得到交集也就是不允许右边为null 效果上等于内连接后只取左边的字段 算术运算符 除并取整 div 除并取余 % 位与运算 全真才真 位或 | 全假才假 位异或 ^ 不等为1 位取反 ~ 逻辑运算符 And Or Not 或者 ! In Not in Exists 注意是决定主查询是否得以保留
3.1 Hive函数分两大类
内置函数 用户自定义函数 内置函数 数值类型函数 日期类型函数 字符串类型函数 Concatstr1 str2 Concat分隔符str|数组 Substrstrstart不是从0是从1开始负数就是倒着数开始直到最后 Substrstr22从2开始并长度为2 正则表达式替换函数 Regexp_replace(str1正则表达式str2) Parse_url() Split() 集合函数 条件函数 If (12, 100, 200) : true为100 false为200 When case 11 then XXX Else End as 假名 数据脱敏函数 用户自定义函数根据输入输出的行数 UDF 普通函数一进一出 UDAF 聚合函数多进一出 Count Avg Min Max 多维分析 Grouping_sets Cube Rollup UDTF 表生成函数一进多出 Explode Array或者map 限制 只查询源数据表没有问题只查询explode爆炸的表也没有问题但是不能都返回 所以hive专门提供了侧视图的语法专门用来搭配explode这样的UDTF函数 其实就是源join爆炸 侧视图 Lateral view XXXas 假名 是一种特殊的语法主要搭配UDTF类型函数一起使用用于解决UDTF函数的限制也即是爆炸的虚表没有和原表进行连接 开窗函数 窗口函数 OLAP函数 特点: 输入值是从select语句的结果集中的一行或者多行的“窗口”中获取的。 关键字over 最常见的分组聚合总是会屏蔽很多细节 所以窗口函数的存在使得分组聚合过程中的细节被保留 其中sum比较特殊有四种不同的用法 还有适合用来top业务的三个