电商项目实战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) 动手实现表以及表中的字段的血缘关系如何实现?

浙公网安备 33010602011771号