自己写的一个简单例子,用来做话题描述去重,表中的desc字段 “a-b-a-b-b-c”需要去重
python代码如下:
#!/usr/bin/python
import sys
reload(sys)
sys.setdefaultencoding('utf8')
def quchong(desc):
a=desc.split('-')
return '-'.join(set(a))
while True:
line = sys.stdin.readline()
if line == "":
break
line = line.rstrip('\n')
# your process code here
parts = line.split('\t')
parts[2]=quchong(parts[2])
print "\t".join(parts)
下面是转载过来的,比较详细
二、hive map中字段自增的写法(转)
分类: hadoop 2010-09-03 16:01 99人阅读 评论(0) 收藏 举报
1、建立表结构
hive> CREATE TABLE t3 (foo STRING, bar MAP<STRING,INT>)
> ROW FORMAT DELIMITED
> FIELDS TERMINATED BY '/t'
> COLLECTION ITEMS TERMINATED BY ','
> MAP KEYS TERMINATED BY ':'
> STORED AS TEXTFILE;
OK
2、建成的效果
hive> describe t3;
OK
foo string
bar map<string,int>
3、生成test.txt
jeffgeng click:13,uid:15
4、把test.txt load进来
hive> LOAD DATA LOCAL INPATH 'test.txt' OVERWRITE INTO TABLE t3;
Copying data from file:/root/src/hadoop/hadoop-0.20.2/contrib/hive-0.5.0-bin/bin/test.txt
Loading data to table t3
OK
load完效果如下
hive> select * from t3;
OK
jeffgeng {"click":13,"uid":15}
5、可以这样查map的值
hive> select bar['click'] from t3;
...一系列的mapreduce...
OK
13
6、编写add_mapper
#!/usr/bin/python
import sys
import datetime
for line in sys.stdin:
line = line.strip()
foo, bar = line.split('/t')
d = eval(bar)
d['click'] += 1
print '/t'.join([foo, str(d)])
7、在hive中执行
hive> CREATE TABLE t4 (foo STRING, bar MAP<STRING,INT>)
> ROW FORMAT DELIMITED
> FIELDS TERMINATED BY '/t'
> COLLECTION ITEMS TERMINATED BY ','
> MAP KEYS TERMINATED BY ':'
> STORED AS TEXTFILE;
hive> add FILE add_mapper.py
INSERT OVERWRITE TABLE t4
> SELECT
> TRANSFORM (foo, bar)
> USING 'python add_mapper.py'
> AS (foo, bar)
> FROM t3;
FAILED: Error in semantic analysis: line 1:23 Cannot insert into target table because column number/types are different t4: Cannot convert column 1 from string to map<string,int>.
8、为什么会报出以上错误?貌似add_mapper.py的输出是string格式的,hive无法此这种格式的map认出。后查明,AS后边可以为字段强制指定类型
INSERT OVERWRITE TABLE t4
SELECT
TRANSFORM (foo, bar)
USING 'python add_mapper.py'
AS (foo string, bar map<string,int>)
FROM t3;
9、同时python脚本要去除字典转换后遗留下来的空格,引号,左右花排号等
#!/usr/bin/python
import sys
import datetime
for line in sys.stdin:
line = line.strip('/t')
foo, bar = line.split('/t')
d = eval(bar)
d['click'] += 1
d['uid'] += 1
strmap = ''
for x in str(d):
if x in (' ', "'"):
continue
strmap += x
print '/t'.join([foo, strmap])
10、执行后的结果
hive> select * from t4;
OK
jeffgeng {"click":14,"uid":null}
Time taken: 0.146 seconds
uid没有自增,原因待查
分享到:
相关推荐
这就相当于hive+python了hive+python能解决大多的需求,除非你的数据是非结构化数据,此时你就回到了远古时代不得不写mapreduce了.而为什么不使用hive+java,hive+c,hive+...因为:python真是太好用了,脚本语言,无需编译...
配套专栏:https://blog.csdn.net/yellow_python/category_10582173.html
整理了python从基础入门到高级进阶的所有资料: 01.初识Python.md 02.语言元素.md 03.分支结构.md 04.循环结构.md 05.构造程序逻辑.md 06.函数和模块的使用.md 07.字符串和常用数据结构.md 08.面向对象编程基础.md ...
HBase、 Java9 、Java10 、MySQL优化 、JVM原理 、JUC多线程、 CDH版Hadoop Impala、 Flume 、Sqoop、 Azkaban、 Oozie、 HUE、 Kettle、 Kylin 、Spark 、Mllib机器学习、 Flink、 Python、 SpringBoot、 Hadoop3.x...
计算引擎:Scriptis基于Linkis,可与Spark,Hive,Python等多个计算引擎连接。 运行时功能:完整的作业生命周期显示和智能诊断。 结果集:多个结果集支持,自定义结果集别名和一键式可视化。 数据库服务:用于...
大数据基础知识入门 社会保障事业部 张火磊 主要内容 大数据价值 03 大数据概念、特性、由来 01 大数据应用举例 04 02 Hadoop技术介绍 大数据概念、特性、由来 什么叫大数据? 麦肯锡全球研究所给出的定义是:一 种...
编程语言和开发技术:如Java、$C++、Python、JavaScript、Ruby等。 数据库技术:如关系型数据库(如MySQL、Oracle、SQL Server)和非关系型数据库(如MongoDB、Redis)等。 前端开发:HTML、CSS、JavaScript等用于...
第一部分 NoSQL入门 第1章 NoSQL的概念及适用范围 2 1.1 定义和介绍 3 1.1.1 背景与历史 3 1.1.2 大数据 5 1.1.3 可扩展性 7 1.1.4 MapReduce 8 1.2 面向列的有序存储 9 1.3 键/值存储 11 1.4 文档数据库 ...
全栈数据很好的入门书籍,高清带书签。以数据分析领域最热的Python语言为主要线索,介绍了数据分析库numpy、Pandas与机器学习库scikit-learn,使用了可视化环境Orange 3来理解算法的一些细节。对于机器学习,既有...
Spark SQL可以使用SQL或熟悉的DataFrame API在Spark程序中查询结构化数据,可在Java,Scala,Python和R中使用 【2.2】统一的数据访问方式 DataFrame和SQL提供了一种访问各种数据源的通用方法,包括Hive,Avro,...
路易吉仓库 在Groupon上的样板实现 是一个Python软件包,可帮助您构建批处理作业的复杂管道。 它处理依赖关系解析,工作流管理,可视化,处理故障,命令行集成等 ...入门 包括一些示例工作流程。 假
任柳江 pdf 高清 带目录 扫描版 <br/>《全栈数据之门》以数据分析领域最热的Python语言为主要线索,介绍了数据分析库numpy、Pandas与机器学习库scikit-learn,使用了可视化环境Orange 3来理解算法的一些细节。...
0-读论文(7篇) 文章编号 文章译文 链接 0 【读论文】先知 1个 【论文笔记】在神经网络中提取知识 2 【论文笔记】深层神经网络很容易被愚弄 ... 【论文笔记】深度神经网络的特征如何可传递 ...打包Python
通过链接或电子邮件声明并创建Hive帐户并创建邀请的网站 入门 这些说明将为您提供项目的副本,并在新的debian / ubuntu上运行 先决条件 使用apt安装的软件包 apt install git \ sqlite3 \ python3-iniparse \ ...
部署快速入门 ClouderaVM。 检查您是否安装了所有这些服务: 高密度文件系统 蜂巢 水槽 Sqoop 纱 动物园管理员 2. 实现随机事件生产者 使用 Java、Scala 或 Python 实现事件生产者。 每个事件消息描述单个产品购买。...