大数据Hive仓库是什么

大数据Hive仓库是什么,第1张

Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射成一张表,并提供类SQL查询功能;其本质是将HQL转化成MapReduce程序。

构建在Hadoop之上的数据仓库:

使用HQL作为查询接口

使用HDFS存储

使用MapReduce计算

灵活性和扩展性比较好:支持UDF,自定义存储格式等:

适合离线数据处理

目标:

1、掌握HQL中的各种连接及其组合使用;

2、掌握数据分析中业务指标思路转换的技巧;

3、区分好full join 和 union all 的使用场景;

4、在多表连接时,注意各种细节和业务逻辑;

5、复杂表连接要学会分步骤处理

需注意:

1、表连接时,必须进行重命名;

2、on后面使用的连接条件必须起到 唯一键值 的作用(有时会有多个字段组合);

3、inner可省略不写,效果是一样的

4、表连接时不能使用 a join b join c这种方式,不然会极度浪费电脑的资源和延长查询时间,要在子查询的表里先做好筛选之后在连接;

1)找出在2019年购买后又退款的用户(记得要去重)

注意:一定要先去重,再做表连接,养成良好的习惯(虽然可以先连接再去重,但是那么做会使执行效率很低)

2)在2017年和2018年都购买的用户

3)在2017年、2018年、2019年都有交易的用户

进行左连接之后,以左表为全集,返回能够匹配上的右边表的匹配结果,没有匹配上的则显示NULL。

拓展:

right join:以右表为全集,返回能够匹配上的左边表的匹配结果,没有匹配上的则显示NULL,可以由left join改写出同样的结果。

4)在2019年购买,但是没有退款的用户

5)在2019年由购买的用户的学历分布

6)在2017年和2018年都购买,但是没有在2019年购买的用户

查询两个表的所有用户时使用full join是一个比较好的方法(需要用到coalesce函数:

注:coalesce函数,coalesce(expression1,expression2,,expression n),依次参考各参数表达式,遇到非null值即停止并返回该值,如果所有的表达式都是空值,最终将返回一个空值。

注:表合并时字段名称必须一致,字段顺序必须一致,而且不用填写连接条件

7)2017-2019年由交易的所有用户数

union all 和 union 的区别:

union all 不会去重,不会排序,效率较快;union 会去重且排序,效率较慢。

如果表很大时,推荐先去重,再进行 union all ,不能直接对表进行 union all,不然效率很慢。

8)2019年每个用户的支付和退款金额汇总

也可以使用 full join 的方式:

9)2019年每个支付用户的支付金额和退款金额

10)首次激活时间在2017年,但是一直没有支付的用户年龄段分布

步骤总结:

1、先筛选出年份为2017注册的用户;

2、没有支付的人;

3、年龄段分布

注意:由于age也是在user_info的表格里,第三步用的字段需要在第一步进行预处理,所以在限制时间的时候需要同时对年龄段进行预处理,这样在第三步的时候才会由年龄段这个字段;需要注意对 case when 的字段进行重命名才能进行后续的 *** 作

11)2018、2019年交易的用户,其激活时间段分布

步骤总结:

1 取出2018和2019年所有的交易用户的交集

2 取出所有用户的激活时间

3 统计时间分布

sqoop导入mysql中表不需要手动创建。连接到hive的默认数据库后会自动创建的。Sqoop是一个用来将Hadoop和关系型数据库中的数据相互转移的工具,可以将一个关系型数据库(例如

MySQL

,Oracle

,Postgres等)中的数据导入到Hadoop的HDFS中

以上就是关于大数据Hive仓库是什么全部的内容,包括:大数据Hive仓库是什么、HiveSQL核心技能之表连接、怎样用sqoop把navicat for mysql 里的表导入到hive中等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9766137.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存