3.6 使用Sqoop将hive分析结果表导入mysql
3.6.1 创建mysql表
mysql -u root -p(启动MySQL,需要输入密码,不显示)
create database whw;(创建数据库)
创建一个表格
create table whw_logs_stat(logdate varchar(10) primary key,pv int,reguser int,ip int,jumper int);
3.6.2 将hive结果文件导入mysql
查看hive存放的表位置
show create table whw_2013_05_30;
使用sqoop将我们的hive里面的结果表导入到我们的MySQL里面,使用sqoop export –connect jdbc:mysql://localhost:3306/数据库 –username root -p –table MySQL里面的表名 –export-dir hive里面结果表的存储位置 -m 1 –input -fields-terminated -by ‘\001’
新建终端执行:
sqoop export --connect jdbc:mysql://localhost:3306/whw --username root -P --table whw_logs_stat --export-dir /opt/hadoop/hive/warehouse/data.db/whw_2013_05_30 -m 1 --input-fields-terminated-by '\001'
sqoop export --connect jdbc:mysql://localhost:3306/whw --username root -P --table whw_logs_stat --export-dir /opt/hadoop/hive/warehouse/data.db/whw_2013_05_31 -m 1 --input-fields-terminated-by '\001'
查看MySQL是否导入成功
select * from whw_logs_stat;
成功导入!
附加操作—增添色彩
本地Navicat连接:
(我们用虚拟机里面的IP来连接我们的本地Navicat,这样有助于我们数据分析可视化!)
数据可视化(项目色彩一);
数据可视化可以直观的把我们的数据展现出来,作为领导者决策的重要参考意见
我采用pycharm的pymysql对虚拟机里面的MySQL进行远程连接,通过编程对数据可视化一键展示,不需要我们手动的添加数据,直接可以保存变量数据
简单的数据分析:很明显我们可以通过可视化的效果得知,2013-05-31的浏览量、注册用户、独立IP数这些正向指标都比较的好,都是高于2013-05-30的效果,所以我们可以在这一天对网站加大维护和投入相应的广告来盈利。
from pyecharts.globals import ThemeType from pyecharts import options as opts from pyecharts.charts import Bar import pymysql conn = pymysql.connect( host='192.168.190.135', user='root', password='2211', database='whw', port=3306, charset='utf8' ) cur = conn.cursor() sql = 'select logdate as `日期`,pv as `浏览量`,reguser as `注册用户数`,ip as `独立IP数量`,jumper as `跳出用户数` from `whw_logs_stat`;' cur.execute(sql) data = cur.fetchall() print(data) x_1=list(data[0][1:]) x_2=list(data[1][1:]) print(x_1) print(x_2) a=[] for x in data: a.append(x[0]) a_1=a[0] a_2=a[1] print(a_1) print(a_2) conn.close() data_0=['浏览量', '注册用户', '独立IP数', '跳出用户数'] c = ( Bar({"theme": ThemeType.MACARONS}) .add_xaxis(data_0) .add_yaxis(a_1, x_1) #gap="0%" 这个可设置柱状图之间的距离 .add_yaxis(a_2, x_2) #gap="0%" 这个可设置柱状图之间的距离 .set_global_opts(title_opts={"text": "某网站日志数据分析", "subtext": "柱状图"}, #该标题的颜色跟随主题 # 该标题默认为黑体显示,一般作为显示常态 # title_opts=opts.TitleOpts(title="标题") xaxis_opts=opts.AxisOpts( name='类别', name_location='middle', name_gap=30, # 标签与轴线之间的距离,默认为20,最好不要设置20 name_textstyle_opts=opts.TextStyleOpts( font_family='Times New Roman', font_size=16 # 标签字体大小 )), yaxis_opts=opts.AxisOpts( name='数量', name_location='middle', name_gap=60, name_textstyle_opts=opts.TextStyleOpts( font_family='Times New Roman', font_size=16 # font_weight='bolder', )), # datazoom_opts=opts.DataZoomOpts(type_="inside"), #鼠标可以滑动控制 # toolbox_opts=opts.ToolboxOpts() # 工具选项 # brush_opts=opts.BrushOpts() #可以保存选择 ) .render("简单柱状图.html") ) print("图表已生成!请查收!")
将数据导入到hbase(项目色彩二)
创建数据表和列族:create 'whw','data'
插入数据:
Put 'whw','1','data:londate,pv,reguser,jumper','2013-05-30,69857,28,10411,3749'
put 'whw','2','data:londate,pv,reguser,jumper','2013-05-31,502404,523,24635,8454'
参数说明:添加数据:put ‘表名称’,’行键’,’列族:列名1,列名2……’,‘数据1,数据2……’在这里我们就可以理解为是一个二维表,也就是Excel类似的,一行一列确定一个单元格
扫描整个列族:scan ‘表名称’, {COLUMN=>‘列族’}
Scan ‘whw’,{ COLUMN =>’data’}