hadoop中的hive查询cdn访问日志指定时间段内url访问次数最多的前10位(结合python语言)

简介:

hadoop环境描述:

master节点:node1

slave节点:node2,node3,node4

远端服务器(python连接hive):node29


需求:通过hive查询到cdn日志中指定时间段内url访问次数最多的前10个url

ps:用pig查询可以查询文章:

http://shineforever.blog.51cto.com/1429204/1571124


说明:python操作远程操作需要使用Thrift接口:

hive源码包下面自带Thrift插件:

[root@node1 shell]# ls -l /usr/local/hive-0.8.1/lib/py

total 28

drwxr-xr-x 2 hadoop hadoop 4096 Nov  5 15:29 fb303

drwxr-xr-x 2 hadoop hadoop 4096 Oct 15 10:30 fb303_scripts

drwxr-xr-x 2 hadoop hadoop 4096 Nov  5 15:29 hive_metastore

drwxr-xr-x 2 hadoop hadoop 4096 Oct 15 10:30 hive_serde

drwxr-xr-x 2 hadoop hadoop 4096 Nov  5 15:29 hive_service

drwxr-xr-x 2 hadoop hadoop 4096 Nov  5 15:20 queryplan

drwxr-xr-x 6 hadoop hadoop 4096 Nov  5 15:20 thrift


1)把相关文件scp到远端的node29相关目录下:

scp -r /usr/local/hive-0.8.1/lib/py/* 172.16.41.29:/usr/local/hive_py/.


2) 在node1服务器上开发hive:

[hadoop@node1 py]$ hive --service  hiveserver

Starting Hive Thrift Server


3)在node29上编写查询脚本:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#!/usr/bin/env python
#coding:utf-8
#找出cdn日志指定时间段,url访问次数最多的前10个;
 
import  sys
import  os
import  string
import  re
import  MySQLdb
 
#加载hive的python相关库文件;
sys.path.append( '/usr/local/hive_py' )
from  hive_service  import  ThriftHive
from  hive_service.ttypes  import  HiveServerException
from  thrift  import  Thrift
from  thrift.transport  import  TSocket
from  thrift.transport  import  TTransport
from  thrift.protocol  import  TBinaryProtocol
 
 
dbname = "default"
hsql = "select request,count(request) as counts  from  cdnlog where time > =  '[27/Oct/2014:10:40:00 +0800]'  and  time < =  '[ 27 / Oct / 2014 : 10 : 49
: 59  + 0800 ]' group by request order by counts desc limit  10 "
 
def  hiveExe(hsql,dbname):
 
     try :
         transport  =  TSocket.TSocket( '172.16.41.151' 10000 )
         transport  =  TTransport.TBufferedTransport(transport)
         protocol  =  TBinaryProtocol.TBinaryProtocol(transport)
         client  =  ThriftHive.Client(protocol)
         transport. open ()
#加载增长表达式支持,必需(以下加载路径为远端hive路径,不是脚本的本地路径!)
         client.execute( 'add jar /usr/local/hive-0.8.1/lib/hive_contrib.jar' )
#        client.execute("use " + dbname)
#        row = client.fetchOne()
         client.execute(hsql)
         return  client.fetchAll()  #查询所有数据;
 
         transport.close()
     except  Thrift.TException, tx:
         print  '%s'  %  (tx.message)
 
if  __name__  = =  '__main__' :
     results = hiveExe(hsql,dbname)
     num = len (results)
     for  in  range (num):



在node29上执行脚本,输入结果为:

wKioL1RbHoPT0rHZAAHHICCIv7U438.jpg

node1服务器上hive计算过程为:

wKiom1RbHjnhxxvdAAcmfK-RneY166.jpg



本文转自 shine_forever 51CTO博客,原文链接:http://blog.51cto.com/shineforever/1573439


相关文章
|
4月前
|
域名解析 缓存 监控
阿里云渠道商:如何排查阿里云CDN访问问题?
排查阿里云CDN访问问题需分步诊断:先检查DNS解析与CDN基础配置,再根据访问慢、内容未更新或50x错误等现象定位原因,结合ping、tracert及阿里云实时日志、节点检测等工具深度分析。掌握此流程,快速解决异常。
|
6月前
|
存储 缓存 网络协议
如何使用CDN加速访问OSS存储的图片资源?
通过阿里云CDN加速OSS上的图片和视频资源,可显著提升访问速度、降低带宽成本。CDN将静态资源缓存至离用户最近的节点,减少加载时间,并提供图像处理、缓存优化等功能,提升用户体验。同时,CDN还支持访问数据分析,助力运营决策。本文详解如何通过CDN控制台配置OSS加速,包括添加域名、设置CNAME、配置缓存策略等步骤,帮助您快速实现资源加速。
|
4月前
|
缓存 安全 网络安全
阿里云渠道商:怎么通过阿里云CDN提高全球用户的访问体验?
阿里云CDN通过全球2800+节点、智能调度、性能优化与安全防护三大技术,实现低延迟、高稳定的内容分发,助力企业提升全球访问体验,让业务如本地般流畅。
|
9月前
|
数据采集 存储 NoSQL
分布式爬虫去重:Python + Redis实现高效URL去重
分布式爬虫去重:Python + Redis实现高效URL去重
|
11月前
|
数据采集 监控 Python
Python爬虫异常处理:自动跳过无效URL
Python爬虫异常处理:自动跳过无效URL
Python爬虫异常处理:自动跳过无效URL
|
存储 人工智能 缓存
AI助理直击要害,从繁复中提炼精华——使用CDN加速访问OSS存储的图片
本案例介绍如何利用AI助理快速实现OSS存储的图片接入CDN,以加速图片访问。通过AI助理提炼关键操作步骤,避免在复杂文档中寻找解决方案。主要步骤包括开通CDN、添加加速域名、配置CNAME等。实测显示,接入CDN后图片加载时间显著缩短,验证了加速效果。此方法大幅提高了操作效率,降低了学习成本。
5976 16
|
SQL JavaScript 前端开发
基于Python访问Hive的pytest测试代码实现
根据《用Java、Python来开发Hive应用》一文,建立了使用Python、来开发Hive应用的方法,产生的代码如下
276 6
基于Python访问Hive的pytest测试代码实现
|
JSON API 数据格式
阿里云国际版CDN查询实时带宽步骤
阿里云国际版CDN查询实时带宽步骤
|
SQL JavaScript 前端开发
基于Java访问Hive的JUnit5测试代码实现
根据《用Java、Python来开发Hive应用》一文,建立了使用Java、来开发Hive应用的方法,产生的代码如下
305 6
|
数据采集 索引 Python
Python中这样操作url也太爽了吧
Python中这样操作url也太爽了吧
346 5