电商项目实战Hive实现-使用Hive完成统计分析功能

1、统计PV

hive (testzhang_db)> select count(*) from track_info where day='2013-07-21';

  

2、统计Province

hive (testzhang_db)> select province, count(*) from track_info where day='2013-07-21' group by province;

  

3、停止hive进程

[hadoop@hadoop000 bin]$ jps
2743 NameNode
3399 NodeManager
3080 SecondaryNameNode
7817 RunJar
2891 DataNode
3276 ResourceManager
10124 Jps
[hadoop@hadoop000 bin]$ kill -9 7817

 

4、省份统计输出目标表,这是一个内部表,可以自己尝试做外部表

hive (testzhang_db)> CREATE TABLE track_info_province_start(
                   > province string,
                   > cnt bigint
                   > ) partitioned by (day string)
                   > ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';
hive (testzhang_db)> insert overwrite table track_info_province_start partition(day='2013-07-21')
                   > select province,count(*) as cnt from track_info where day='2013-07-21' group by province;
hive (testzhang_db)> select * from track_info_province_start where day='2013-07-21';

 

5、到现在为止

我们统计的数据已经在Hive表track_info_province_start

而且这个表是一个分区表。后续统计报表的数据可以直接从这个表中查询

也可以将hive表的数据导出到RDBMS(sqoop)

 

6、流程梳理

(1)ETL

(2)把ETL输出的数据加载到track_info分区表中

(3)各个维度统计结果的数据输出到各自维度的表中track_info_province_start

(4)将数据导出(可选)

 

7、Hive实现项目的方便性体现

(1)如果一个框架不能落地到SQL层面,这个框架就不是一个非常适合的框架

 

8、大数据处理过程中关于血缘关系的思考

在离线统计分析过程中,比如使用Hive进行各种维度的统计分析,如何知道某个表中的字段数据是来源自前面的哪个/些表以及表中的字段

示例:a表和b表按照某个字段进行join后得到一个新表c,那么新表c的字段就是来自于a表和b表中的某个/些字段

提示:
1) 血缘关系能带来什么?
2) 为什么要用到血缘关系?
3) 动手实现表以及表中的字段的血缘关系如何实现?

posted @ 2021-08-31 10:57  酱汁怪兽  阅读(478)  评论(0)    收藏  举报