主要工作:利用python脚本对日志文件解析,将解析后的每个字段存放到对应表中;

(1)创建自己的数据库,存放所有自己建立的表:

hive>create database lina;

(2)进入数据库中,并创建两个表格分别是record,log:

hive>create table record(da string);

hive>load data inpath '/source_data/日志文件' into table

record;

这样每一行日志就存放到da中,下步就是调用python脚本对da中的字符串进行解析。在此之前要把python脚本存放到mysql数据库,该脚本在每一启动Hive的时候都要重新加载一次;

hive> add file

/data0/cdh/WeiboLog/resolveLog.py;

出现下面的就表示成功:Added resource:

/data0/cdh/WeiboLog/resolveLog.py

hive>

create log(server string,time string, url string,appkey string,uid

string,ip string,pool string);

hive> from

record > insert overwrite table

log > select TRANSFORM(da) using 'resolveLog.py' as

serive,time,url,appkey,uid,ip,pool;

这样就能把数据加载到表log中,可以对log表进行SQL操作!!!!

弄出来真不容易,太感谢师傅了!!!

存在问题:

在创建表record时,要设置文本分隔符,否则会导致结果错误。比如通过mapreduce统计的日志文件是20505509条,而计算没有设置行分隔符的表record的结果是21771333条,结果偏差很大,以后建表时要注意的问题。

重新建立表records,如下:

hive> create table records(line string)

> row format delimited

> lines terminated by '\n' stored as

textfile

> load data inpath

'/source_data/openapi_v4-2012-07-18_00000' into table records;

建立表logs:

hive> create table

logs(server string,time string, url string,appkey string,uid

string,ip string,pool string)

> row format

delimited> fields terminated by

'\001' > lines terminated by '\n' stored as

textfile;

将表records中的数据导入表logs中:

hive> add file

/data0/cdh/WeiboLog/resolveLog.py;

Added resource: /data0/cdh/WeiboLog/resolveLog.py

hive> from records

> insert overwrite table logs

> select transform(line)

> using 'resolveLog.py'

> as server,time,

url,appkey,uid,ip,pool;

这样在运行hive> select count(*) from

logs;结果就正确了!!

python调用hive与java调用区别_python和hive结合使用相关推荐

  1. java执行python返回null_[转]java调用python脚本以及通过Process.waitFor()直接调用python模块返回错误代码1的一种解决办法...

    常见的java调用python脚本方式 通过jython提供的类库实现 通过Runtime.getRuntime()开启进程来执行脚本文件 通过jython提供的类库实现 通过jython实现的话,我 ...

  2. java执行python脚本_通过Java调用Python脚本

    在进行开发的过程中,偶尔会遇到需要使用Java调用Python脚本的时候,毕竟Python在诸如爬虫,以及科学计算等方面具有天然的优势.最近在工作中遇到需要在Java程序中调用已经写好的Python程 ...

  3. python中raise和raise e区别_python raise和assert的区别

    python中raise和assert的区别 一.使用raise抛出异常 python可以自动触发异常,raise(内置函数)的定义为显示的抛出异常,用户可以使用raise进行判断,显式的引发异常,r ...

  4. python常用编译器和解释器的区别_Python常用编译器原理及特点解析

    python要知道怎么用好编译器.当我们编写Python代码时,我们得到的是一个包含Python代码的以.py为扩展名的文本文件.要运行代码,就需要Python解释器去执行.py文件. 由于整个Pyt ...

  5. python中函数和类的区别_Python中函数和方法的区别

    简单总结: 与类和实例无绑定关系的function都属于函数(function): 与类和实例有绑定关系的function都属于方法(method). 首先摒弃错误认知:并不是类中的调用都叫方法 函数 ...

  6. java 调用存储过程structdescriptor,Java调用oracle存储过程,集合入参的正确姿势

    这是我工作之前遇到的一个需求,Java调用存储过程,入参是集合.踩了一些坑,决定写个干货,和大家分享下. 项目使用的oracle版本: com.oracle ojdbc6 11.2.0.1.0 sys ...

  7. java exec 调用vbs_通过java调用VBS,再用VBS执行Excel中的宏的例子 | 学步园

    test.vbs文件中vb代码如下: dim args set args = wscript.arguments Dim objXL Set objXL = CreateObject("Ex ...

  8. java调用oracle过程,JAVA调用ORACLE存储过程报错

    当前位置:我的异常网» Java Web开发 » JAVA调用ORACLE存储过程报错 JAVA调用ORACLE存储过程报错 www.myexceptions.net  网友分享于:2015-07-1 ...

  9. python线程和c++线程的区别_Python、线程、吉尔和C++

    有没有办法让boost::python控制每次与python交互的python GIL?在 我正在用boost::python编写一个项目.我试图为外部库编写C++包装,并用Python脚本控制C++ ...

  10. python闭包和装饰器的区别_python中闭包和装饰器的理解(关于python中闭包和装饰器解释最好的文章)。(转)...

    呵呵!作为一名教python的老师,我发现学生们基本上一开始很难搞定python的装饰器,也许因为装饰器确实很难懂.搞定装饰器需要你了解一些函数式编程的概念,当然还有理解在python中定义和调用函数 ...

最新文章

  1. 微信小程序拼团后端接口设计规范
  2. Javascript学习笔记12——Ajax入门
  3. keras冻结_[开发技巧]·keras如何冻结网络层
  4. 在python语言中语句的续行符是_Python程序设计课后习题答案-第二单元(2页)-原创力文档...
  5. laravel-admin 在指定的相册下添加照片
  6. 程序发布以后,如何修改安装URL
  7. PCB布线规则自学笔记
  8. nssa和stub_华为stub、nssa区域配置
  9. 微信小程序html的font-size,字体大小(font-size)
  10. 服装行业个性化服务:订阅电商鼻祖Stitch Fix商业模式中的个性化推荐分析
  11. win10启用远程服务器访问,win10 如何打开远程服务_win10如何打开远程连接服务
  12. python csv转tsv
  13. 对Slim 框架进行总结 一
  14. linux音频文件格式转换,在Ubuntu @ Linux 中音频和音乐文件的格式转换
  15. 慎独的修炼之道--群处守嘴 独处守心 修以清心为主 涉世及慎言为先
  16. 2021InfoComm|钉钉会议 Rooms 的 “全场景“ 智能化解决方案
  17. ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务 的解决方法
  18. 《TCP/IP协议族》:POP3协议
  19. CEO、COO、CFO、CTO是什么意思?
  20. win10自带虚拟机Hyper V联网

热门文章

  1. 杭电1203I NEED A OFFER!
  2. 杭电1869六度分离
  3. ucc编译器(优化)
  4. wps启用编辑按钮在哪里_WPS 新功能上线,官宣首发!人人都会用的图片设计
  5. 论文编辑之目录和正文页码不同的设置
  6. Java hibernate假外键_JAVA基础:Hibernate外键关联与HQL语法
  7. shell开启飞行模式_手机飞行模式,太神奇了,今天总算明白了,不用真是太浪费了...
  8. java 怎么启动线程_线程如何正确的启动
  9. 用友ERP-U8执行完成流程小记
  10. python 面向对象_多态、内置方法、反射