中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Hodoop中怎么新增線上日志

發布時間:2021-06-24 17:37:19 來源:億速云 閱讀:138 作者:Leah 欄目:云計算

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表中讀取數據,寫相應的代碼來進行展示和查詢;

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

云龙县| 丰台区| 卫辉市| 高阳县| 堆龙德庆县| 卢湾区| 甘谷县| 全南县| 汾西县| 德格县| 长丰县| 惠州市| 苗栗市| 吴江市| 福泉市| 滦平县| 淮阳县| 洪江市| 阿克| 张家口市| 响水县| 太仓市| 沧州市| 阳曲县| 三原县| 壤塘县| 滕州市| 高青县| 邯郸县| 德格县| 灵璧县| 涿鹿县| 古蔺县| 凤阳县| 陆良县| 无棣县| 额敏县| 沅江市| 佛教| 吉安县| 花莲县|