请选择 进入手机版 | 继续访问电脑版
  • 关注官方微信 微信公众号 添加方式:
    1:搜索微信号(gogolinux
    2:扫描左侧二维码
  • 登录 注册
  • 一起学LINUX - GOGOLINUX

    查看: 598|回复: 0

    京东金融数据分析:MySQL+HIVE的结合应用案例详解【附全代码】 ...

    [复制链接]

    5

    主题

    5

    帖子

    8

    积分

    新手上路

    Rank: 1

    积分
    8
    发表于 2020-6-3 15:14:13 | 显示全部楼层 |阅读模式
    - 点击上方“中国统计网”订阅我吧!-


    文末领取【案例数据集+全部代码】
    给定的数据为业务情景数据,所有数据均已进⾏了采样和脱敏处理,字段取值与分布均与真实业务数据不同。提供了时间为 2016-08-03 到 2016-11-30 期间,用户在移动端的行为数据、购物记录和历史借贷信息,及 11 月的总借款金额。【数据集请在文末添加顾问老师领取】

    文件包括user.csv,order.cav,click.csv,loan.csv,loan_sum.csv
    前 言
    任务 1
    一般情况下我们的user的数据都是存在自己的关系型数据库中,所以这里将 t_user 用户信息到 MySQL 中,我们在从MySQL中将其导入到hdfs上,其他三个文件及,t_click,t_loan 和 t_loan_sum 直接导入到 HDFS 中。
    mysql自带csv导入功能所以先创建数据库和user表

    导入数据

    任务 2
    利用 Sqoop 将 MySQL 中的 t_user 表导入到 HDFS 中,显示有哪些数据库

    显示有哪些表

    使用sqoop把MySQL中表t_user数据导入到hdfs的/data/sq目录下
    sqoopimport --connect jdbc:mysql://master:3306/jd --username root --password''--table t_user --target-dir /data/sq出错了
    18/08/2113:44:26ERROR tool.ImportTool: Import failed: No primary key could be foundfortable t_user. Please specify onewith--split-byorperform a sequentialimportwith'-m 1'.说是这个表中没有主键。我们可以建表的时候给它设置上主键,也可以使用下面–split-by来指定使用哪个字段分割
    sqoopimport --connect jdbc:mysql://master:3306/jd --username root --password''--table t_user --target-dir /data/sq --split-by'uid'又出错了

    错误原因:因为我这里的hadoop集群使用了3台虚拟机,slave和slave2没有使用root用户访问MySQL的权限
    进入mysql的控制台:
    use mysql
    select host,user,password from user;

    可以看到现在只有master有权限,给slave和slave2也设置权限

    这才执行OK。查看导入后的hdfs上的目录hdfs dfs -ls /data/sq

    查看每一部分的数据hdfs dfs -cat /data/sq

    OK导入完成 剩下的几个CSV文件直接功过hadoop的put命令上传到hdfs上对应的目录即可。
    任务 3
    利用 Presto 分析产生以下结果,并通过 web 方式可视化:

    • 各年龄段消费者每日购买商品总价值
    • 男女消费者每日借贷金额
    我们在使用presto做数据分析的时候,一般是跟hive联合起来使用,先从hive中创建相应的数据表,然后使用presto分析hive中的表。
    启动hive
    //启动hive的metastorenohup hive --service metastore >>/home/chs/apache-hive-2.1.1-bin/metastore.log2>&1&//启动hive servernohup hive --service hiveserver2 >>/home/chs/apache-hive-2.1.1-bin/hiveserver.log2>&1&//启动客户端 beeline 并连接beelinebeeline> !connect jdbc:hive2://master:10000/default hadoop hadoop创建用户表

    导入hdfs上的数据

    创建用户订单表

    导入hdfs上的数据

    创建用户点击表

    导入hdfs上的数据

    创建借款信息表t_loan

    导入hdfs上的数据

    创建月借款总额表t_loan_sum

    导入hdfs上的数据

    启动Presto
    在安装目录下运行 bin/launcher start
    运行客户端 bin/presto –server master:8080 –catalog hive –schema default
    连接hive !connect jdbc:hive2://master:10000/default hadoop hadoop
    开始查询分析
    第一题
    selectt_user.age,t_order.buy_time,sum(t_order.price*t_order.qty-t_order.discount)assumfromt_userjoint_orderont_user.uid=t_order.uidgroupbyt_user.age,t_order.buy_time;部分结果

    第二题
    selectt_user.sex,SUBSTRING(t_loan.loan_time,0,10)astime,sum(t_loan.loan_amount)assumfromt_userjoint_loanont_user.uid=t_loan.uidgroupbyt_user.sex ,SUBSTRING(t_loan.loan_time,0,10);部分结果

    任务 4
    利用 Spark RDD 或 Spark DataFrame 分析产生以下结果:

    • 借款金额超过 2000(因为数据做过处理,这里就分析大于5的) 且购买商品总价值超过借款总金额的用户 ID
    • 从不买打折产品且不借款的用户 ID

    代码过长仅展示部分,完整代码请添加顾问领取
    任务 5
    利用 spark streaming 实时分析每个页面点击次数和不同年龄段消费总金额。
    步骤:编写 Kafka produer 程序读取hdfs上的文件每隔一段时间产生数据,然后使用spark streaming读取kafka中的数据进行分析,分析结果写入到redis中。
    (1)将 t_click 数据依次写入 kafka 中的 t_click 主题中,每条数据写入间隔为10 毫秒,其中 uid 为 key,click_time+” ,” +pid 为 value

    运行结果

    (2)将 t_order 数据依次写入 kafka 中的 t_order 主题中,每条数据写入间隔为10 毫秒,其中 uid 为 key,uid+” ,” +price + “,” + discount 为value

    运行结果

    (3)编写 spark streaming 程序,依次读取 kafka 中 t_click 主题数据,并统计:每个页面累计点击次数,并存入 redis,其中 key 为” click+pid” ,value 为累计的次数

    运行结果redis

    (4)编写 spark streaming 程序,依次读取 kafka 中 t_order 主题数据,并统计:不同年龄段消费总金额,并存入 redis,其中 key 为” age” ,value 为累计的消费金额

    运行结果redis

    爱数据 · 6月公开课
    课程亮点:
    直播时间:6月4日 明晚20:30

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    x
    分享到:
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    官方微博:

    官方头条号:

    官方微信

    手机访问:

    官方微信

    QQArchiver 手机版 小黑屋 一起学LINUX - GOGOLINUX 闽ICP备18025837号-1 Discuz! X3.4 Powered by © 2001-2013 Comsenz Inc. 

    本站资源均来自互联网或会员发布,如果侵犯了您的权益请与我们联系,我们将在24小时内删除!谢谢!

    快速回复 快速发帖 返回顶部 返回列表