`
安铁辉
  • 浏览: 245276 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

hive+python 入门

 
阅读更多
自己写的一个简单例子,用来做话题描述去重,表中的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没有自增,原因待查
分享到:
评论
4 楼 cldtc 2014-08-13  
请问这种情况下python脚本里面怎么打counter呢?通常的打法会直接进stderr不会被解析诶
3 楼 chinesejie 2014-07-24  
print '\t'.join([foo, strmap])+ " " //此处多个空格

然后uid就出来了
2 楼 dacoolbaby 2013-03-04  
dacoolbaby 写道
请问我执行Python的时候就报错
Caused by: org.apache.hadoop.hive.ql.metadata.HiveException: [Error 20003]: An error occurred when trying to close the Operator running your custom script.

我脚本是没有问题的,测试过的。
为什么还会这样呢??

请问,您是在分布式环境下跑的吗?
1 楼 dacoolbaby 2013-02-27  
请问我执行Python的时候就报错
Caused by: org.apache.hadoop.hive.ql.metadata.HiveException: [Error 20003]: An error occurred when trying to close the Operator running your custom script.

我脚本是没有问题的,测试过的。
为什么还会这样呢??

相关推荐

    分布式数据库课程设计+基于Hbase的滴滴出行数据分析+Hive+Hadoop+Mysql+Sqoop+可视化

    在 Hbase 中的数据导入到 Hive 表后,利用 Hive 的 SQL 查询能力进行数据清洗、转换和分析,例如聚合、分组、过滤等操作,以得到有价值的信息。 3.3 数据导出与集成 使用 Sqoop 将 Hive 中处理后的数据导出到 ...

    Spark+快速入门共7页.pdf.zip

    【Spark快速入门】指南 Spark,作为大数据处理领域的重要框架,是Apache软件基金会下的一个开源项目,由加州大学伯克利分校AMPLab开发并维护。它以高效、易用和可扩展性著称,尤其在大规模数据处理和分析中表现出色...

    大数据系列-Hive入门与实战.pptx

    3. **Thrift 服务器**:提供跨语言支持,如 C++, Java, PHP, Python 和 Ruby,通过 Thrift 协议与 Hive 通信。 4. **解析器、编译器和优化器**:解析器将 HQL 转换为抽象语法树,编译器生成执行计划,优化器根据规则...

    大数据大代码_python大数据_python_python_

    本教程主要聚焦于如何利用Python进行大数据分析,适合初学者入门。我们将通过一个名为"大数据大作业.ipynb"的Jupyter Notebook文件来探讨这个主题。 首先,Python中的Pandas库是处理结构化数据的核心工具。Pandas...

    2021Python+大数据开发.pdf

    - 数据开发工程师:需要熟悉Java和Python编程语言,精通Hadoop生态系统,能够开发和优化Spark、Flink、MapReduce、Hive等应用程序,并且能够利用NoSQL数据库、分布式消息队列等技术构建企业级的数据处理和存储解决...

    Spark入门(Python).docx

    2. **Spark SQL**:允许用户通过SQL或DataFrame API进行结构化数据处理,与Hive等传统SQL系统兼容。 3. **Spark Streaming**:处理实时数据流,支持微批处理以提高效率。 4. **MLlib**:机器学习库,包含多种算法和...

    python-learning.zip

    整理了python从基础入门到高级进阶的所有资料: 01.初识Python.md 02.语言元素.md 03.分支结构.md 04.循环结构.md 05.构造程序逻辑.md 06.函数和模块的使用.md 07.字符串和常用数据结构.md 08.面向对象编程基础.md ...

    Python3实战Spark大数据分析及调度-第8章 Spark SQL.zip

    2. **PySpark入门**:PySpark是Python绑定的Spark API,使Python开发者可以充分利用Spark的功能。本章节可能涵盖了如何配置和创建SparkSession,这是PySpark中执行所有操作的基础入口点。 3. **DataFrame和Dataset*...

    Java、Python、大数据、前端学习路线图(思维导图)

    大数据处理涉及Hadoop生态系统,包括HDFS、MapReduce、HBase、Hive等。理解分布式存储和计算原理是基础,然后学习Spark框架,包括Spark Core、Spark SQL、Spark Streaming等。此外,NoSQL数据库如MongoDB也是重要...

    价值上万的视频教程互联网程序开发+大数据+Hadoop、hive、Spark

    HBase、 Java9 、Java10 、MySQL优化 、JVM原理 、JUC多线程、 CDH版Hadoop Impala、 Flume 、Sqoop、 Azkaban、 Oozie、 HUE、 Kettle、 Kylin 、Spark 、Mllib机器学习、 Flink、 Python、 SpringBoot、 Hadoop3.x...

    使用python进行数据分析.pptx

    本教程将带你入门Python数据分析,使用诸如pandas、numpy、bokeh和sklearn等关键库,让你掌握数据分析的基本流程。 首先,环境安装至关重要。推荐使用Anaconda,这是一个集成的Python开发环境,内含多个用于数据...

    Hadoop之Hbase从入门到精通.doc

    Hadoop之HBase从入门到精通 本文将详细介绍HBase技术,从基础概念到高级应用,旨在帮助读者快速掌握HBase技术。 一、HBase技术介绍 HBase是Hadoop Database,是一个高可靠性、高性能、面向列、可伸缩的分布式存储...

    PySpark_Day05:Spark SQL 基础入门.pdf

    PySpark_Day05:Spark SQL 基础入门 本节课程主要介绍了 PySpark 库的 Spark SQL 模块的基础知识,包括 DataFrame 的概念、RDD 数据的聚合操作、RDD 分区处理算子、Hive SQL 的实现词频统计等。 一、DataFrame ...

    Hadoop入门教程

    Hadoop生态系统包括许多相关的开源项目,如Hive(数据仓库工具)、Pig(数据分析平台)、HBase(分布式数据库)、Zookeeper(协调服务)和Spark(高速计算引擎)。这些工具与Hadoop配合,可以构建完整的大数据解决...

    PyFlink技术入门及实践.pptx

    2. **定义源和接收器**:使用 TableDescriptor 定义数据源(如 HDFS、Kafka 等)和数据接收器(如 Hive 表、文件等)。 3. **查询数据**:通过 Table API 算子(如 select、filter、groupBy、distinct、window 等)...

    Scriptis:Scriptis用于交互式数据分析,包括脚本开发(SQL,Pyspark,HiveQL),任务提交(Spark,Hive),UDF,功能,资源管理和智能诊断

    计算引擎:Scriptis基于Linkis,可与Spark,Hive,Python等多个计算引擎连接。 运行时功能:完整的作业生命周期显示和智能诊断。 结果集:多个结果集支持,自定义结果集别名和一键式可视化。 数据库服务:用于...

    Hadoop之Hbase从入门到精通

    ### Hadoop之Hbase从入门到精通 #### HBase技术介绍与概述 HBase是一种分布式、高可靠性且高性能的列式存储系统,它基于Hadoop生态体系构建,并且能够支持大规模的数据存储需求。HBase的设计灵感来源于Google的...

    hbase入门到精通

    ### HBase从入门到精通——关键技术点解析 #### 一、HBase技术概览 **HBase**(Hadoop Database)是一种分布式、可扩展的NoSQL数据库系统,它基于Google Bigtable论文的思想构建而成,并且作为Apache Hadoop生态...

Global site tag (gtag.js) - Google Analytics