当前位置:   article > 正文

Day15_20180503_链家二手房信息案例分析_用hive求二手房面积范围

用hive求二手房面积范围

一、回顾
    -》Hive:为用户提供SQL接口来操作Hadoop的工具
        -》将hdfs上的文件映射成表
        -》将SQL语句转换为MapReduce程序提交给yarn
    -》hive的使用
        -》client:HQL
        -》-e:在Linux shell中执行一条命令
        -》-f:在Linux shell中执行一个sql文件
         注意:实际工作中
            -》使用脚本,将SQL语句封装到一个SQL文件
                在脚本中使用bin/hive -f xxxx.sql
            -》jdbc:cs
                java app -> hive server
            -》 beeline:统一jdbc客户端
                -》启动hiveserver2:10000
                    bin/hiveserver2
                -》启动beeline去连接hiveserver2 
                    jdbc:hive2://hostname:10000
                    !connect jdbc:hive2://hostname:10000
                    rdedu
                    rdedu
        -》web UI
            -》启动hiveserver2,默认web端口:9999
                在哪台机器启动hiveserver,你的web就在哪台机器
            -》需要自己编译hive,生成war包
                -》将war包放入lib目录下即可
    -》问题
        -》hive启动没有成功加载自定义的配置
            -》你的hive_conf_dir
                export HIVE_CONF_DIR=/opt/modules/hive-1.2.1-bin/conf
        -》mysql的连接配置
            mysql> select user,host from user;
                +------+------+
                | user | host |
                +------+------+
                | root | %    |
                +------+------+                
    -》hive元数据的三种存储方式
        -》derby
        -》本地元数据库(当前):c -> s(元数据) 
            server访问元数据库
        -》远程元数据库(公司):多个框架共同使用hive的元数据
            spark SQL、impala共享hive元数据库(表对应hdfs的位置)
            server访问元数据服务
            c -> s -> metastore(服务)
                 c ->  s       
二、表的类型

  1. 第一种:
  2. CREATE  TABLE IF NOT EXISTS tb_name(
  3. col1 type,
  4. col2 type,
  5. col3 type,
  6. ……
  7. )
  8. ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
  9. LINES TERMINATED BY '\n'
  10. LOCATION 'HDFS_PATH';
  11. 第二种:as
  12. CREATE TABLE tb2 as SELECT …… FROM tb1;
  13. 第三种:like
  14. CREATE TABLE tb2 like tb1; 只复制表结构

强制删除非空数据库:drop database empmanager cascade;

外部表和管理表:

  -》区别:在删除时
        -》外部表:只删除元数据,没有删除表目录
        -》管理表:既删除元数据也删除表目录
    -》在工作中:一般都使用外部表
        -》对于同一份数据文件,我们会创建多个表,供于多个业务分析
        -》在对同一个数据文件目录创建多个外部表时,使用location来指定

创建外部表

  1. CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.]table_name
  2.   [(col_name data_type [COMMENT col_comment],
  3.   [PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)]
  4.   [ROW FORMAT row_format
  5.   [STORED AS file_format]
  6.   [LOCATION hdfs_path]

类型:
EXTERNAL:外部表
hive (empmanager)>    

  1. create external table dept_ext(
  2. deptno int,
  3. dname string,
  4. loc string
  5. )
  6. row format delimited fields terminated by '\t';
  7. load data local inpath '/opt/datas/dept.txt' into table dept_ext;

MANAGED_TABLE :管理表(默认)
hive (empmanager)>  

  1. create table dept_mgr(
  2. deptno int,
  3. dname string,
  4. loc string
  5. )
  6. row format delimited fields terminated by '\t';
  7. load data local inpath '/opt/datas/dept.txt' into table dept_mgr;

验证: 

[root@bigdata-training01 hadoop-2.6.0-cdh5.7.6]#bin/hdfs  dfs -put /opt/datas/dept.txt /user/hive/warehouse/empmanager.db/dept_ext/dept2.txt;

Permission    Owner    Group    Size    Last Modified    Replication    Block Size    Name
-rwxr-xr-x    rdedu    supergroup    79 B    2019/9/7 下午4:25:47    1    128 MB    dept.txt
-rw-r--r--      rdedu    supergroup    79 B    2019/9/7 下午4:32:16    1    128 MB    dept2.txt

hive (empmanager)>

select * from  dept_ext;

dept_ext.deptno dept_ext.dname  dept_ext.loc
10               ACCOUNTING      NEW YORK
20               RESEARCH        DALLAS
30               SALES           CHICAGO
40               OPERATIONS      BOSTON
10               ACCOUNTING      NEW YORK
20               RESEARCH        DALLAS
30               SALES           CHICAGO
40               OPERATIONS      BOSTON 
 

  1. #外部表通过location来指定导入的文件
  2. create external table dept_ext1(
  3. deptno int,
  4. dname string,
  5. loc string
  6. )
  7. row format delimited fields terminated by '\t'
  8. location '/user/hive/warehouse/test/dept';       
  9.         
  10. create external table dept_ext2(
  11. deptno int,
  12. dname string,
  13. loc string
  14. )
  15. row format delimited fields terminated by '\t'
  16. location '/user/hive/warehouse/test/dept';  

  使用hive等SQL on hadoop 工具
  SQL:子查询,join
        rdbms:相对来说较难
        大数据:所有的业务都可以进行拆分
            -》先将内部查询的结果报错
            -》再对结果进行外部查询操作
https://tech.meituan.com/user-funnel-analysis-design-build.html

  1. select 
  2.     count (distinct t1.id1), 
  3.     count (distinct t2.id2), 
  4.     count (distinct t3.id3) 
  5. from (
  6.     select 
  7.         uuid id1, timestamp ts1 
  8.     from 
  9.         data 
  10.     where 
  11.         timestamp >= 1510329600 and timestamp < 1510416000 and page = '首页'
  12.         ) t1
  13.     left join
  14.     (select 
  15.         uuid id2, timestamp ts2 
  16.     from 
  17.         data 
  18.     where 
  19.         timestamp >= 1510329600 and timestamp < 1510416000 and page = '搜索' and keyword = '中餐'
  20.     ) t2
  21.     on 
  22.         t1.id1 = t2.id2 and t1.ts1 < t2.ts2 and t2.ts2 - t1.ts1 < 3600
  23.     left join
  24.     (select 
  25.         uuid id3, timestamp ts3 
  26.     from 
  27.         data 
  28.     where 
  29.         timestamp >= 1510329600 and timestamp < 1510416000 and page = '菜品'
  30.     ) t3
  31.     on t1.id1 = t3.id3 and t2.ts2 < t3.ts3 and t1.ts1 < t3.ts3 and t3.ts3 - t1.ts1 < 3600

kylin/impala
链家上海二手房分析
https://zhuanlan.zhihu.com/p/24802969
数据获取及加载

  1. DROP DATABASE IF EXISTS second_house;
  2. CREATE DATABASE second_house;
  3. USE second_house;

数据源表
小区  房型  面积  地区          楼层  朝向  总价  单价  建造年份
梅园六街坊,2室0厅,47.72,浦东,低区/6层,朝南,500,104777,1992年建

  1. CREATE TABLE 2nd_sh_house(
  2. village_name string,
  3. house_type string,
  4. house_area double,
  5. region string,
  6. house_floor string,
  7. direction string,
  8. total_price double,
  9. single_price double,
  10. build_date string
  11. )
  12. ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
  13. LINES TERMINATED BY '\n'
  14. STORED AS TEXTFILE;
load data local inpath '/opt/datas/2nd_house_price.csv' into table 2nd_sh_house;

数据的清洗:ETL:数据业务表
    -》字段过滤
    -》字段补全:
    -》字段格式化

数据分析统计
 1、户型分布
房型
   一室  二室  三室  四室  五室  五室以上  

  1. ##设置本地模式会快一点
  2. set hive.exec.mode.local.auto;
  3. set hive.exec.mode.local.auto=true;
  1. select a.house_type2 ,count(1) as number from (
  2. SELECT 
  3.     village_name,house_type,CASE
  4.     WHEN substring(house_type,0,1) = 1 THEN '一室'
  5.     WHEN substring(house_type,0,1) = 2 THEN '两室'
  6.     WHEN substring(house_type,0,1) = 3 THEN '三室'
  7.     WHEN substring(house_type,0,1) = 4 THEN '四室'
  8.     WHEN substring(house_type,0,1) = 5 THEN '五室'
  9.     WHEN substring(house_type,0,1) > 5 THEN '五室以上'
  10.     ELSE '不合法'
  11.     END AS house_type2
  12. FROM
  13.     2nd_sh_house
  14. ) as
  15. GROUP BY 
  16.     a.house_type2
  17. order by 
  18.     number desc;

a.house_type2   number
两室                   13534
三室                    7456
一室                    5210
四室                    1414
五室                    444
五室以上             143
Time taken: 8.518 seconds, Fetched: 6 row(s)

2、二手房的面积和房价的分布
面积  50平以下   50-70平  70-90平  90-110平 110-130平    130-150平 150平以上

  1. SELECT 
  2.     village_name,house_area,CASE
  3.     WHEN house_area  > 150 THEN '150平以上'
  4.     WHEN house_area  > 130 THEN '130-150平'
  5.     WHEN house_area  > 110 THEN '110-130平'
  6.     WHEN house_area  > 90 THEN '90-130平'
  7.     WHEN house_area  > 70 THEN '70-90平'
  8.     WHEN house_area  > 50 THEN '50-70平'
  9.     ELSE '50平以下'
  10.     END AS area_type
  11. FROM
  12.     2nd_sh_house limit 10;

village_name                                house_area      area_type
梅园六街坊                                     47.72              50平以下
碧云新天地(一期)                       108.93            90-130平
博山小区                                         43.79               50平以下
金桥新村四街坊(博兴路986弄)   41.66              50平以下
博山小区                                         39.77               50平以下
潍坊三村                                         34.84               50平以下
伟莱家园                                         100.15             90-130平
世茂滨江花园                                  260.39            150平以上
羽北小区                                         69.88               50-70平
证大家园(公寓)                          122.75             110-130平
Time taken: 0.165 seconds, Fetched: 10 row(s)


 


        
        
        

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/572581
推荐阅读
相关标签
  

闽ICP备14008679号