python调用hive与java调用区别_python和hive结合使用
主要工作:利用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结合使用相关推荐
- java执行python返回null_[转]java调用python脚本以及通过Process.waitFor()直接调用python模块返回错误代码1的一种解决办法...
常见的java调用python脚本方式 通过jython提供的类库实现 通过Runtime.getRuntime()开启进程来执行脚本文件 通过jython提供的类库实现 通过jython实现的话,我 ...
- java执行python脚本_通过Java调用Python脚本
在进行开发的过程中,偶尔会遇到需要使用Java调用Python脚本的时候,毕竟Python在诸如爬虫,以及科学计算等方面具有天然的优势.最近在工作中遇到需要在Java程序中调用已经写好的Python程 ...
- python中raise和raise e区别_python raise和assert的区别
python中raise和assert的区别 一.使用raise抛出异常 python可以自动触发异常,raise(内置函数)的定义为显示的抛出异常,用户可以使用raise进行判断,显式的引发异常,r ...
- python常用编译器和解释器的区别_Python常用编译器原理及特点解析
python要知道怎么用好编译器.当我们编写Python代码时,我们得到的是一个包含Python代码的以.py为扩展名的文本文件.要运行代码,就需要Python解释器去执行.py文件. 由于整个Pyt ...
- python中函数和类的区别_Python中函数和方法的区别
简单总结: 与类和实例无绑定关系的function都属于函数(function): 与类和实例有绑定关系的function都属于方法(method). 首先摒弃错误认知:并不是类中的调用都叫方法 函数 ...
- java 调用存储过程structdescriptor,Java调用oracle存储过程,集合入参的正确姿势
这是我工作之前遇到的一个需求,Java调用存储过程,入参是集合.踩了一些坑,决定写个干货,和大家分享下. 项目使用的oracle版本: com.oracle ojdbc6 11.2.0.1.0 sys ...
- java exec 调用vbs_通过java调用VBS,再用VBS执行Excel中的宏的例子 | 学步园
test.vbs文件中vb代码如下: dim args set args = wscript.arguments Dim objXL Set objXL = CreateObject("Ex ...
- java调用oracle过程,JAVA调用ORACLE存储过程报错
当前位置:我的异常网» Java Web开发 » JAVA调用ORACLE存储过程报错 JAVA调用ORACLE存储过程报错 www.myexceptions.net 网友分享于:2015-07-1 ...
- python线程和c++线程的区别_Python、线程、吉尔和C++
有没有办法让boost::python控制每次与python交互的python GIL?在 我正在用boost::python编写一个项目.我试图为外部库编写C++包装,并用Python脚本控制C++ ...
- python闭包和装饰器的区别_python中闭包和装饰器的理解(关于python中闭包和装饰器解释最好的文章)。(转)...
呵呵!作为一名教python的老师,我发现学生们基本上一开始很难搞定python的装饰器,也许因为装饰器确实很难懂.搞定装饰器需要你了解一些函数式编程的概念,当然还有理解在python中定义和调用函数 ...
最新文章
- 微信小程序拼团后端接口设计规范
- Javascript学习笔记12——Ajax入门
- keras冻结_[开发技巧]·keras如何冻结网络层
- 在python语言中语句的续行符是_Python程序设计课后习题答案-第二单元(2页)-原创力文档...
- laravel-admin 在指定的相册下添加照片
- 程序发布以后,如何修改安装URL
- PCB布线规则自学笔记
- nssa和stub_华为stub、nssa区域配置
- 微信小程序html的font-size,字体大小(font-size)
- 服装行业个性化服务:订阅电商鼻祖Stitch Fix商业模式中的个性化推荐分析
- win10启用远程服务器访问,win10 如何打开远程服务_win10如何打开远程连接服务
- python csv转tsv
- 对Slim 框架进行总结 一
- linux音频文件格式转换,在Ubuntu @ Linux 中音频和音乐文件的格式转换
- 慎独的修炼之道--群处守嘴 独处守心 修以清心为主 涉世及慎言为先
- 2021InfoComm|钉钉会议 Rooms 的 “全场景“ 智能化解决方案
- ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务 的解决方法
- 《TCP/IP协议族》:POP3协议
- CEO、COO、CFO、CTO是什么意思?
- win10自带虚拟机Hyper V联网
热门文章
- 杭电1203I NEED A OFFER!
- 杭电1869六度分离
- ucc编译器(优化)
- wps启用编辑按钮在哪里_WPS 新功能上线,官宣首发!人人都会用的图片设计
- 论文编辑之目录和正文页码不同的设置
- Java hibernate假外键_JAVA基础:Hibernate外键关联与HQL语法
- shell开启飞行模式_手机飞行模式,太神奇了,今天总算明白了,不用真是太浪费了...
- java 怎么启动线程_线程如何正确的启动
- 用友ERP-U8执行完成流程小记
- python 面向对象_多态、内置方法、反射