千家信息网

Hodoop中怎么新增线上日志

发表于:2025-02-22 作者:千家信息网编辑
千家信息网最后更新 2025年02月22日,Hodoop中怎么新增线上日志,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。第一步:接到整合线上日志的任务,开始进行分析
千家信息网最后更新 2025年02月22日Hodoop中怎么新增线上日志

Hodoop中怎么新增线上日志,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

第一步:接到整合线上日志的任务,开始进行分析,结果如下:

1、线上的日志是按照时间存储起来的,刚开始以为直接添加就行。结果发现,实际的业务是从九月初期开始,十月份的时候添加过两个字段,并且重新的建立了一个日志文件,目前就有两个日志文件,后者除了在原来的基础上多了两个字段,所以决定先入库,分别把两个的日志中的数据入库到hive;

  • 把当前用到的日志添加一个定时的命令,把日志同步到S3服务器,用到的脚本如下:

    #!/bin/sh
    ####################
    #put log to s3
    #Author Lcm
    #date 2016-10-27
    ###################
    #dateYMD=`date -d yesterday +%Y-%m-%d`
    #dateYM=`date -d yesterday +%Y-%m`
    #dateMD=`date -d yesterday +%m-%d`
    dateYMD='2016-09-'$1
    dateYM='2016-09'
    dateMD='09-'$1

    #2016-09 - 2016-10-07
    OLD_LOG_PATH='/home/centos/tools/apache-tomcat-8080/igp_logs/reg/'$dateYM'/reg1-'$dateMD'*.log'

    #2016-10-08
    #OLD_LOG_PATH='/home/centos/tools/apache-tomcat-8080/igp_logs/reg1/'$dateYM'/reg1-'$dateMD'*.log'

    OLD_LOG_PATH='/home/centos/tools/apache-tomcat-8080/igp_logs/reg1/'$dateYM'/reg1-'$dateMD'*.log'
    NEW_LOG_PATH='/home/centos/tools/s3/s3cmd/s3cmddata/reglog'$dateMD'.log'
    TAR_LOG_PATH='/home/centos/tools/s3/s3cmd/s3cmddata/reglog'$dateMD'.gz'
    cat $OLD_LOG_PATH > $NEW_LOG_PATH
    if [ -f "$NEW_LOG_PATH" ];then
    gzip -c $NEW_LOG_PATH >$TAR_LOG_PATH
    /home/centos/tools/s3/s3cmd put $TAR_LOG_PATH 's3://ngemobi/logs/igp_logs/reg/dt='$dateYMD'/reglog'$dateMD'.gz'
    rm $NEW_LOG_PATH
    rm $TAR_LOG_PATH
    fi

  • 在当前的服务器中添加定时的入库hive的命令,主要是把前一天的日志存储到Hive中;在定时之前需要把之前的数据先手动的入库,操作的命令如下:查看数据源、从s3下载到本地、将本地文件的数据入库到hive、查看分区是否添加成功、查看数据是否添加成功

    1、/data/s3cmd/s3cmd ls -l s3://ngemobi/logs/igp_logs/reg/dt=2016-11-07/

    2、/data/s3cmd/s3cmd get s3://ngemobi/logs/igp_logs/reg/dt=2016-11-08/reglog11-08.gz

    3、LOAD DATA LOCAL INPATH '/data/s3data/reglog11-08' INTO TABLE appname_reg_logs partition(dt='2016-11-08');
    4、show partitions appname_reg_logs;
    5、select count(*) from appname_reg_logs where dt='2016-11-08';

  • 把每天(aid_byday)新增的和所有的安卓的ID(aid_all),分别的存储到两个Hive表中,这里有顺序的关系,首先是把每天新增的得到之后,在更新aid_all表;
    这里有个逻辑关系
    每天新增的数据 = 当天所有的数据 - aid_all 表中存在的 [aid_all表中存储的是今天之前所有的]
    所有的安卓id:今天所有的数据处理完之后进行更新
    每天新增手动代码:
    insert into appname_androidid_byday partition (dt='2016-11-06') select distinct(tmp.reg_aid) from(selectappname_androidid_all.appname_androidid all_aid,appname_reg_logs.dt reg_dt, appname_reg_logs.appname_androidid reg_aidfromappname_reg_logsleft outer join appname_androidid_allonappname_reg_logs.appname_androidid=appname_androidid_all.appname_androidid) tmpwheretmp.reg_dt='2016-11-06' and tmp.all_aid is null;

    每天所有aid_all入库:
    insert into appname_androidid_all partition (dt='2016-11-05') selectappname_androidid from appname_androidid_byday where dt='2016-11-05';

  • 从当前已经有的Hive表中获取求和的文件,然后将文件的数据读取存储到Mysql表中;
    1、每日活跃用户入库
    select count(*) as LOGS_GETERR_10001, errlog_logtype, errlog_plugin_version from get_error_logs where dt='seDate' and hour='seHour' group by errlog_logtype, errlog_plugin_version
    2、每日新增的数据入库
    select count(distinct tmp.reg_aid) as LOGS_APPNAMEADD_10002,tmp.reg_apkname, tmp.reg_country, tmp.reg_apkversioncode from(select appname_androidid_all.appname_androidid all_aid, appname_reg_logs.dt reg_dt, appname_reg_logs.appname_apkname reg_apkname, appname_reg_logs.appname_country reg_country, appname_reg_logs.appname_apkversioncode reg_apkversioncode, appname_reg_logs.appname_androidid reg_aid from appname_reg_logs left outer join appname_androidid_all on appname_reg_logs.appname_androidid=appname_androidid_all.appname_androidid) tmp where tmp.reg_dt='2016-11-03' tmp.all_aid is null group by tmp.reg_apkname,tmp.reg_country,tmp.reg_apkversioncode;
    3、每日留存数据入库
    select count(distinct tmp.reg_aid) asLOGS_APPNAMEADD_10003,tmp.reg_apkname, tmp.reg_country, tmp.reg_apkversioncode from(select appname_androidid_all.appname_androidid all_aid, appname_androidid_all.dt all_dt, appname_reg_logs.appname_apknamereg_apkname, appname_reg_logs.appname_countryreg_country, appname_reg_logs.appname_apkversioncode reg_apkversioncode, appname_reg_logs.dt reg_dt, appname_reg_logs.appname_androidid reg_aid from appname_reg_logs left outer join appname_androidid_all on appname_androidid_all.dt='2016-11-02'and appname_reg_logs.appname_androidid=appname_androidid_all.appname_androidid) tmp wheretmp.reg_dt='2016-11-03' and tmp.all_aid is not nullgroup bytmp.reg_apkname,tmp.reg_country,tmp.reg_apkversioncode;

  • 从mysql表中读取数据,写相应的代码来进行展示和查询;

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。

数据 日志 两个 文件 存储 命令 成功 代码 字段 服务器 结果 安卓 帮助 更新 服务 清楚 业务 任务 先手 内容 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 麻省理工 软件开发 选择jdhtxy数据库 阐述如何搭建数据库管理系统论文 win7进 网络安全模式 无法连接到代理发服务器怎么解决 深圳市杰讯网络技术有限公司 沃达丰 网络安全 江苏智能软件开发执行标准 软件开发包硕士论文 电力系统网络安全管理平台16字 网络安全检查小组组长职责 软件开发过程文档管理系统 地税局网络安全法宣传报告 时空网络技术团队 软件开发公司销售怎么做 互联网教育科技推广服务团 汽车建模数据库 计算机网络技术所需要的能力 计算及网络技术就业方向 深圳安卓底层软件开发培训 南阳那里能学软件开发 阿里云学生免费服务器 php服务器安卓 远程管理服务器的常用工具 汕头销售软件开发设计 erp服务器拒绝一台电脑访问 暨南大学数据库 中研院近现代史所数位资源数据库 性价比好的服务器安全防护 嵌入式软件开发服务费
0