Day15_20180503_链家二手房信息案例分析
一、回顾
-》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
二、表的类型
第一种:
CREATE TABLE IF NOT EXISTS tb_name(
col1 type,
col2 type,
col3 type,
……
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
LOCATION 'HDFS_PATH';第二种:as
CREATE TABLE tb2 as SELECT …… FROM tb1;第三种:like
CREATE TABLE tb2 like tb1; 只复制表结构
强制删除非空数据库:drop database empmanager cascade;
外部表和管理表:
-》区别:在删除时
-》外部表:只删除元数据,没有删除表目录
-》管理表:既删除元数据也删除表目录
-》在工作中:一般都使用外部表
-》对于同一份数据文件,我们会创建多个表,供于多个业务分析
-》在对同一个数据文件目录创建多个外部表时,使用location来指定
创建外部表
CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.]table_name[(col_name data_type [COMMENT col_comment],[PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)][ROW FORMAT row_format] [STORED AS file_format][LOCATION hdfs_path]
类型:
EXTERNAL:外部表
hive (empmanager)>
create external table dept_ext(
deptno int,
dname string,
loc string
)
row format delimited fields terminated by '\t';
load data local inpath '/opt/datas/dept.txt' into table dept_ext;
MANAGED_TABLE :管理表(默认)
hive (empmanager)>
create table dept_mgr(
deptno int,
dname string,
loc string
)
row format delimited fields terminated by '\t';
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
#外部表通过location来指定导入的文件
create external table dept_ext1(
deptno int,
dname string,
loc string
)
row format delimited fields terminated by '\t'
location '/user/hive/warehouse/test/dept'; create external table dept_ext2(
deptno int,
dname string,
loc string
)
row format delimited fields terminated by '\t'
location '/user/hive/warehouse/test/dept';
使用hive等SQL on hadoop 工具
SQL:子查询,join
rdbms:相对来说较难
大数据:所有的业务都可以进行拆分
-》先将内部查询的结果报错
-》再对结果进行外部查询操作
https://tech.meituan.com/user-funnel-analysis-design-build.html
select count (distinct t1.id1), count (distinct t2.id2), count (distinct t3.id3)
from (select uuid id1, timestamp ts1 from data where timestamp >= 1510329600 and timestamp < 1510416000 and page = '首页') t1left join(select uuid id2, timestamp ts2 from data where timestamp >= 1510329600 and timestamp < 1510416000 and page = '搜索' and keyword = '中餐') t2on t1.id1 = t2.id2 and t1.ts1 < t2.ts2 and t2.ts2 - t1.ts1 < 3600left join(select uuid id3, timestamp ts3 from data where timestamp >= 1510329600 and timestamp < 1510416000 and page = '菜品') t3on 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
数据获取及加载
DROP DATABASE IF EXISTS second_house;
CREATE DATABASE second_house;
USE second_house;
数据源表
小区 房型 面积 地区 楼层 朝向 总价 单价 建造年份
梅园六街坊,2室0厅,47.72,浦东,低区/6层,朝南,500,104777,1992年建
CREATE TABLE 2nd_sh_house(
village_name string,
house_type string,
house_area double,
region string,
house_floor string,
direction string,
total_price double,
single_price double,
build_date string
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
STORED AS TEXTFILE;
load data local inpath '/opt/datas/2nd_house_price.csv' into table 2nd_sh_house;
数据的清洗:ETL:数据业务表
-》字段过滤
-》字段补全:
-》字段格式化
数据分析统计
1、户型分布
房型
一室 二室 三室 四室 五室 五室以上
##设置本地模式会快一点
set hive.exec.mode.local.auto;
set hive.exec.mode.local.auto=true;
select a.house_type2 ,count(1) as number from (
SELECT village_name,house_type,CASEWHEN substring(house_type,0,1) = 1 THEN '一室'WHEN substring(house_type,0,1) = 2 THEN '两室'WHEN substring(house_type,0,1) = 3 THEN '三室'WHEN substring(house_type,0,1) = 4 THEN '四室'WHEN substring(house_type,0,1) = 5 THEN '五室'WHEN substring(house_type,0,1) > 5 THEN '五室以上'ELSE '不合法'END AS house_type2
FROM2nd_sh_house
) as a
GROUP BY a.house_type2
order by 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平以上
SELECT village_name,house_area,CASEWHEN house_area > 150 THEN '150平以上'WHEN house_area > 130 THEN '130-150平'WHEN house_area > 110 THEN '110-130平'WHEN house_area > 90 THEN '90-130平'WHEN house_area > 70 THEN '70-90平'WHEN house_area > 50 THEN '50-70平'ELSE '50平以下'END AS area_type
FROM2nd_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)
Day15_20180503_链家二手房信息案例分析相关推荐
- python分析链家二手房信息----数据分析实战(一)
链家二手房信息 # 导入需要的库:科学计算包numpy, pandas 可视化包matplotlib, seaborn 机器学习包 sklearn import numpy as np import ...
- python关于二手房的课程论文_基于python爬取链家二手房信息代码示例
基本环境配置 python 3.6 pycharm requests parsel time 相关模块pip安装即可 确定目标网页数据 哦豁,这个价格..................看到都觉得脑阔 ...
- PyQt5+Python+Excel链家二手房信息爬取、可视化以及数据存取
成果图: 第一步运行代码searsh.py,效果如下 第二步选择你所需要爬取数据的城市,如湖北-武汉 然后搜索,结果如下 如果你想爬取更多信息,只需要点击下一页即可 第三步,保存数据.可以将所显示的所 ...
- python爬虫requests源码链家_python爬虫爬取链家二手房信息
#coding=utf-8 import requests from fake_useragent import UserAgent from bs4 import BeautifulSoup imp ...
- python爬虫代码房-python爬虫爬取链家二手房信息
#coding=utf-8 import requests from fake_useragent import UserAgent from bs4 import BeautifulSoup imp ...
- python二手房使用教程_python爬虫爬取链家二手房信息
#coding=utf-8 import requests from fake_useragent import UserAgent from bs4 import BeautifulSoup imp ...
- python爬虫requests源码链家_python数据分析实例:python抓取链家二手房源数据和分析...
python语言,在数据分析方面,涵盖了"数据获取→数据处理→数据分析→数据可视化"这个流程中每个环节,不可不谓之为利器. 本篇文章我们就利用python语言在数据分析方面的应用, ...
- python采集链家二手房信息
都说现在的房价很高,具体有多高呢,我们一起来看看. 现在网上关于房子的价格以及交易信息鱼龙混杂,与实际情况相差比较大,目前链家平台的数据应该是相对比较可靠的,所以这次我们就打算去链家爬一爬. 说到爬虫 ...
- python爬取链家二手房信息
爬取过程分析: 1.链家网url:https://bj.lianjia.com/ershoufang/pg2/ 显示的二手房信息每个url递增一 2.访问时要加头信息,否则无法访问 3.用beauti ...
- python链家二手房_python 爬取链家二手房信息
'''Created on 2017-10-9 @author: wbhuangzhiqiang''' importsysimportreimportcsvimporturllib.requestfr ...
最新文章
- 2021年大数据常用语言Scala(一):Scala简介
- 微软的公开的DLL库
- 定义一个复数类Complex,重载运算符+
- 转:如何调用另一个python文件中的代码
- linux固定分辨率,如何锁定分辨率
- 入门JavaScript?看懂这篇文章就够了!——Web前端系列学习笔记
- 一个简单的linux线程池
- The response status was 0. Check out the W3C XMLHttpRequest Level 2 spec for
- Hibernate 4.3 ORM工具
- Java相关资料分享(视频+电子书籍)
- 树莓派使用STEP3:更换镜像源
- php找不同的数组元素,PHP实现查询两个数组中不同元素的方法
- HDU1847 Good Luck in CET-4 Everybody!
- 我的BRF+自学教程(一):公式(formula)
- TP5 使用redis
- 最新伯乐PHP个人在线自动发卡网源码V3.1
- 基于taskctl实现kettle任务调度
- 技嘉主板bios设置方法
- SeaweedFS安装部署
- 【上位机教程】CANopen通信下一体化步进电机与台达PLC(AS228T)的应用
热门文章
- 香港内推 | 上海千象资产招聘海外CTA量化研究实习生
- 思科路由器配置命令(一)
- springboot整合couchbase
- 梦幻西游默认服务器怎么修改器,梦幻西游古龙服务端安装教程
- Ubuntu 安装 brightness-controller 调节显示亮度
- html广告代码自适应,很实用的对联广告代码(自适应高度)
- 电视机进入工厂模式,factory,怎么退出
- 用计算机解决问题时 首先应该确定程序,算法与程序设计试题带答案
- RainMeter使用教程一篇
- CommScope将收购ARRIS:交易金额约达74亿美元,将加速实现CommScope塑造未来通信网络的愿景