Hive嵌入Python

Python的输入输出都是\t为分隔符,否则会出错,python脚本输入print出规定格式的数据

用法为先add file,使用语法为TRANSFORM (name, items)   USING 'python test.py'  AS (name string, item1 string,item2 string,item3 string),这里后面几个字段对应python的类型

下面是一个将一列转成多列表小案例:

create table test (name string,items string) 

ROW FORMAT DELIMITED 

FIELDS TERMINATED BY '\t';
LOAD DATA local INPATH '/opt/data/tt.txt' OVERWRITE INTO TABLE test ;

tt.txt的内容:

tom	shu fa,wei qi,chang ge
jack game,kan shu,shang wang
lusi lv you,guang jie,gou wu

表2:

create table test2 (name string,item1 string,item2 string,item3 string) 

ROW FORMAT DELIMITED 

FIELDS TERMINATED BY '\t';
-- 将python脚本上传到Hive
Hive> add file /root/test.py
-- 将结果放到test2中
INSERT OVERWRITE TABLE test2 SELECT TRANSFORM (name, items)
USING 'python test.py'
AS (name string, item1 string,item2 string,item3 string)
FROM test;
#!/usr/bin/python  

import sys
for line in sys.stdin:
line = line.strip()
name,it = line.split('\t')
count = it.count(',')+1
for i in range(0,3-count):
it = it+',NULL'
result = it.split(',')[0:3]
print '%s\t%s'%(name,'\t'.join(result))
结果:
-- 表1
hive> select * from test;
OK
tom shu fa,wei qi,chang ge
jack game,kan shu,shang wang
lusi lv you,guang jie,gou wu
Time taken: 0.07 seconds, Fetched: 3 row(s)

 hive> desc test2;
 OK
 name string
 item1 string
 item2 string
 item3 string
 Time taken: 0.141 seconds, Fetched: 4 row(s)

-- 表2
hive> select * from test2;
OK
tom shu fa wei qi chang ge
jack game kan shu shang wang
lusi lv you guang jie gou wu
Time taken: 1.368 seconds, Fetched: 3 row(s)

Hive 11、Hive嵌入Python的更多相关文章

  1. Hive之 hive的三种使用方式(CLI、HWI、Thrift)

    Hive有三种使用方式——CLI命令行,HWI(hie web interface)浏览器 以及 Thrift客户端连接方式. 1.hive  命令行模式 直接输入/hive/bin/hive的执行程 ...

  2. C++嵌入Python,以及两者混用

    以前项目中是C++嵌入Python,开发起来很便利,逻辑业务可以放到python中进行开发,容易修改,以及功能扩展.不过自己没有详细的研究过C++嵌入python的细节,这次详细的研究一下.首先我们简 ...

  3. ubuntu下搭建hive(包括hive的web接口)记录

    Hive版本 0.12.0(独立模式) Hadoop版本 1.12.1 Ubuntu 版本 12.10 今天试着搭建了hive,差点迷失在了网上各种资料中,现在把我的经验分享给大家,亲手实践过,但未必 ...

  4. Hive 文件格式 & Hive操作(外部表、内部表、区、桶、视图、索引、join用法、内置操作符与函数、复合类型、用户自定义函数UDF、查询优化和权限控制)

    本博文的主要内容如下: Hive文件存储格式 Hive 操作之表操作:创建外.内部表 Hive操作之表操作:表查询 Hive操作之表操作:数据加载 Hive操作之表操作:插入单表.插入多表 Hive语 ...

  5. (hive)hive优化(转载)

    1. 概述 1.1 hive的特征: 可以通过SQL轻松访问数据的工具,从而实现数据仓库任务,如提取/转换/加载(ETL),报告和数据分析: 它可以使已经存储的数据结构化: 可以直接访问存储在Apac ...

  6. freeswitch嵌入python脚本

    操作系统:debian8.5_x64 freeswitch 版本 : 1.6.8 python版本:2.7.9 开启python模块 安装python lib库 apt-get install pyt ...

  7. 【hive】——Hive四种数据导入方式

    Hive的几种常见的数据导入方式这里介绍四种:(1).从本地文件系统中导入数据到Hive表:(2).从HDFS上导入数据到Hive表:(3).从别的表中查询出相应的数据并导入到Hive表中:(4).在 ...

  8. 在应用中嵌入Python:转

    在应用中嵌入Python 前面的章节讨论如何扩展Python,如何生成适合的C库等.不过还有另一种情况:通过将Python嵌入C/C++应用以扩展程序的功能.Python嵌入实现了一些使用Python ...

  9. [Hive - LanguageManual] Hive Concurrency Model (待)

    Hive Concurrency Model Hive Concurrency Model Use Cases Turn Off Concurrency Debugging Configuration ...

随机推荐

  1. [RxJS] Logging a Stream with do()

    To help understand your stream, you’ll almost always want to log out some the intermediate values to ...

  2. 住javaWeb分页实现(模拟百度首页)

    本文来源于 http://blog.csdn.net/tjpu_lin/article/details/41050475 近期在开发一个项目,项目中有非常多数据展示的模块.所以要用到分页,网上搜了非常 ...

  3. Android模仿jquery异步请求

    01 package com.xbl.task; 02   03 import java.io.BufferedReader; 04 import java.io.InputStream; 05 im ...

  4. LVM管理

    一.步骤: 1.创建新的分区,并修改分区类型为8e 2.创建物理卷PV 3.将新建的PV添加到要扩展的VG中 4.用命令lvextend或lvresize来将新加入的PE添加到要扩展的LV中 5.用命 ...

  5. install samba on crux without net.

    1. 解压文件 tar -xvfz samba-.tar.gz 2. 进入目录 cd samba- 3. 配置 ./configure 4. 编译 make 5. 安装 make install

  6. js_day13

  7. work staff

    培训一周,很抓狂.不是抓狂培训本身,是自己听不懂,培训还是有用的. 上周四接到一个task,关于checklist.因为组里没有人用过,所以遇到一些问题,本来不应该是一个复杂的工作,但是我需要一个一个 ...

  8. (转)WCF中调用WebService出错,大家帮忙看看,回答就有分

    http://bbs.csdn.net/topics/390542345 在WCF项目里面添加了一个WebService引用,然后在我们调用这个WCF服务时,老出错,提示在 ServiceModel  ...

  9. 拉姆达表达式(Lambda Expressions)

    上面两种写法是一样的 ,拉姆达表达式也是一种委托, 但引用的是匿名方法

  10. OkHttp 上手

    OkHttp 上手 优点 快.节省带宽. 支持 HTTP/2 和 SPDY. HTTP/2 和 SPDY 允许对同一个主机的所有请求,使用一个 socket. 如果不支持 SPDY 的话,可以用连接池 ...