点击流离线分析

我的shell脚本代码 : 外部是crontab 定时器


#!/bin/bash

#
# ===========================================================================
# 程序名称:    点击流数据分析 /周期为小时
# 功能描述:
# 输入参数:    运行日期
# 创建人  :    何睿
# 创建日期:    2017-12-21
# 版本说明:    v1.0
# 代码审核:  
# 修改人名:
# 修改日期:
# 修改原因:
# 修改列表: 
# ===========================================================================

exe_hive="/root/training/apache-hive-1.2.1-bin/bin/hive"

#--------------------------------1.获取时间----------------------------------
dayexec=`date -d '-1 hour' +'%Y-%m-%d %H-00-00'`

#根据参数有无给定时间
if [ -z "$1" ]
then
   day=$dayexec
else
   day=$1
fi

echo "...................shell 脚本执行中  处理的时间是 $day"

#------------------------2.执行MR 清洗日志到loghive目录-----------------------

echo "...................shell 脚本执行中  执行MapReduce  输出路径为/loghive/"

#数据清洗程序类名
progress_class="cn.log.mr.VisitLogDriver"

#待处理日志的存放目录
log_inputPath="/visit/time=$day"

#处理完数据的存放目录
log_outputPath="/loghive/time=$day"

#读取日志文件的目录,判断日志是否存在
files=`hadoop fs -ls "$log_inputPath" | wc -l`


#判断是否有日志文件
if [ $files -gt 0 ];then
#执行mr进行数据清洗
echo "running..    hadoop jar visitlog.jar  $log_inputPath  $log_outputPath"
hadoop jar /work/visitlog.jar  "$log_inputPath"  "$log_outputPath"
else
    echo "MapReduce 输入路径 还没有原始日志文件 具体原因请详细排查"
    exit
fi
#------------------------3.hive处理,增加分区(进入visitlog表)-----------------------

addpartitionHQL="
        use visit;
        alter table visitlog add partition(time='$day') location '/loghive/time=$day';  
"

$exe_hive -e  "$addpartitionHQL"


if [ $? -eq 0 ]; then
    echo "增加分区(进入visitlog表) success"
else
    echo "增加分区(进入visitlog表)  fail"
    exit
fi


#-----------------------4.hive处理,数据清洗(进入clearlog表)-----------------------
clearHQL="
         use visit;
        insert into table clearlog partition(time='$day') select url,urlname,title,encoding,size,color,language,forjvm,forcookie,flash,refurl,browser,uv,split(sessionInfo,'_')[0],split(sessionInfo,'_')[1],split(sessionInfo,'_')[2],ip from visitlog where time='$day';

"

$exe_hive -e  "$clearHQL"

if [ $? -eq 0 ]; then
     echo "数据清洗(进入clearloglog表) success"
else
     echo "数据清洗(进入clearlog表)  fail"
     exit
fi


#------------------------5.hive处理, 最终数据(进入visitAnalysis表)-----------------------

analysisHQL="
        use visit;
        insert overwrite table loganalysis
partition(time='$day')
select t1.pv,t2.uv1,t3.vv,t4.newip,t5.br1,t6.avgtimes,t7.newcust,t8.avgdept
from
(select count(*) pv from clearlog where time='$day') t1,
(select count(distinct uv) uv1 from clearlog where time='$day') t2,
(select count(distinct session) vv from clearlog where time='$day') t3,
(select count(distinct ip) newip from clearlog where ip not in (select distinct ip oldip from clearlog cl where time <> '$day'))t4,
(select round(ta.sonnum/tb.momnum,2)  br1 from (select count(*) sonnum from (select ip,session,count(*)  from clearlog  where time='$day' group by ip,session having count(*)=1) c)ta,(select count(distinct session) momnum from clearlog where time='$day')tb)t5,
(select round(avg(alltime)/60,2) avgtimes from (select (max(times)-min(times))/1000 alltime from clearlog  where time='$day' group by session ) t)t6,
(select count(distinct uv) newcust from clearlog where  time='$day'  and uv  not in (select uv u from clearlog cl1 where time <> '$day'))t7,
(select round(sum(deep)/count(*),2) avgdept from (select max(step) deep from clearlog  group by session) d)t8;


"
$exe_hive -e  "$analysisHQL"

if [ $? -eq 0 ]; then
     echo "最终数据(进入visitAnalysis表) success"
else
     echo "最终数据(进入visitAnalysis表)  fail"
     exit
fi






echo "$day 日志处理完毕................................"


三张表提前生成好的。 一张external 外部表、两张orc 内部表

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: CyberChef离线版是一款行的网络安全工具,用于处理和分析各种数字数据。它具有强大的功能和易于使用的界面,可以在没有互联网连接的情况下使用。 CyberChef离线版可以通过下载软件并安装到本地计算机上来使用。一旦安装完成,用户可以在没有网络连接的情况下快速访问并使用工具。 使用CyberChef离线版,用户可以进行各种数据处理和转换操作。它支持各种编码和加密算法,如Base64、Hex、URL编码等,可以对数据进行解码和编码。此外,它还提供了很多有关数据处理的有用工具,如数据提取、拆分、合并、排序等。 CyberChef离线版还提供了一些高级功能,如数据分析和加密解密操作。用户可以使用工具进行数据解析和提取,以便进行进一步的研究和分析。此外,它还允许用户进行加密和解密操作,以帮助用户保护数据的安全性。 总的来说,CyberChef离线版是一款功能强大且易于使用的网络安全工具。它能够在没有互联网连接的情况下进行各种数据处理和分析操作,为用户提供了便捷和高效的工具。无论是在网络安全领域专业人士还是普通用户,都可以通过使用CyberChef离线版来处理和分析各种数字数据。 ### 回答2: CyberChef离线版是一个独立的软件应用程序,与在线版本相比,它可以在没有网络连接的情况下使用。该离线版将CyberChef的功能和工具集整合到一个本地的应用程序中,用户可以在自己的计算机上安装和运行它。 通过CyberChef离线版,用户能够利用强大的工具,进行各种密码学和数据分析操作。该工具集包括基本的编码和解码函数,如Base64、十六进制、URL编码等。此外,CyberChef离线版还提供了一系列高级功能,例如CRC32校验、Diff工具、JSON解析等。 由于CyberChef离线版可以在本地运行,用户可以在没有网络连接的情况下使用它。这意味着用户无需担心依赖于网络的问题,可以方便地对本地文件进行分析和加密解密操作。此外,离线版的CyberChef还可以提供更高的速度和性能,因为它不需要依赖于网络传输数据。 要使用CyberChef离线版,用户需要先下载并安装该程序。安装完成后,用户可以通过简单的图形界面来执行各种操作。用户只需将待处理的数据输入到CyberChef离线版的界面中,选择所需的功能和操作,然后点击执行按钮,即可获得结果。 总之,CyberChef离线版是一个功能强大的密码学和数据分析工具,它可以在没有网络连接的情况下使用。通过提供一系列的编码、解码和高级功能,它能够帮助用户进行各种数据处理和分析操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值