目录
hadoop pig udf scheme
首页 数据库 mysql教程 Hadoop Pig Udf Scheme

Hadoop Pig Udf Scheme

Jun 07, 2016 pm 04:30 PM
hadoop p pig

hadoop pig udf scheme 如果不指定 scheme 当你返回一个tuple里面有大于1个fields的时候, 就必须指定schemea 不然多个field就当作一个field register myudfs.jar; A = load 'student_data' as (name: chararray, age: int, gpa: float); B = foreach A gene

hadoop pig udf scheme

如果不指定 scheme 当你返回一个tuple里面有大于1个fields的时候,

就必须指定schemea 不然多个field就当作一个field

<code>    register myudfs.jar;
    A = load 'student_data' as (name: chararray, age: int, gpa: float);
    B = foreach A generate flatten(myudfs.Swap(name, age)), gpa;
    C = foreach B generate $2;
    D = limit B 20;
    dump D
</code>
登录后复制

This script will result in the following error cause by line 4 ( C = foreach B generate $2;).

<code>java.io.IOException: Out of bound access. Trying to access non-existent column: 2. Schema {bytearray,gpa: float} has 2 column(s).
</code>
登录后复制

This is because Pig is only aware of two columns in B while line 4 is requesting the third column of the tuple. (Column indexing in Pig starts with 0.) The function, including the schema, looks like this:

下面实现了一个schema,输出为4个参数,输出为两个参数,在android上面要用imei和mac去生成一个ukey,在ios平台上,要用 mac和openudid去生成一个ukey

最后返回的是一个platform,ukey

<code>    package kload;
    import java.io.IOException;
    import org.apache.pig.EvalFunc;
    import org.apache.pig.data.Tuple;
    import org.apache.pig.data.TupleFactory;
    import org.apache.pig.impl.logicalLayer.schema.Schema;
    import org.apache.pig.data.DataType;
     /**
      *translate mac,imei,openudid to key
      */
     public class KoudaiFormateUkey extends EvalFunc<tuple>{
         private String ukey = null;
         private String platform = null;
         public Tuple exec(Tuple input) throws IOException {
             if (input == null || input.size() == 0)
                 return null;
             try{
                 String platform = (String)input.get(0);
                 String mac = (String)input.get(1);
                 String imei= (String)input.get(2);
                 String openudID = (String)input.get(3);
                 this.getUkey(platform,mac,imei,openudID);
                 if(this.platform == null || this.ukey == null){
                     return null;
                 }
                 Tuple output = TupleFactory.getInstance().newTuple(2);
                 output.set(0, this.platform);
                 output.set(1, this.ukey);
                 return output;
             }catch(Exception e){
                 throw new IOException("Caught exception processing input row ", e);
             }
         }
         private String getUkey(String platform, String mac, String imei, String openudID){
             String tmpStr = null;
             String ukey = null;
             int pType=-1;
             if(platform == null){
                 return null;
             }
             tmpStr = platform.toUpperCase();
             if(tmpStr.indexOf("IPHONE") != -1){
                 this.platform = "iphone";
                 pType = 1001; 
             }else if(tmpStr.indexOf("ANDROID") != -1){
                 this.platform = "android";
                 pType = 1002; 
             }else if(tmpStr.indexOf("IPAD") != -1){
                 this.platform = "ipad";
                 pType = 1003; 
             }else{
                 this.platform = "unknow";
                 pType = 1004; 
             }
             switch(pType){
                 case 1001:
                     case 1003:
                     if(mac == null && openudID == null){
                         return null;
                     }
                 ukey = String.format("%s_%s",mac,openudID);
                 break;
                 case 1002:
                     if(mac == null && imei== null){
                         return null;
                     }
                 ukey = String.format("%s_%s",mac,imei);
                 break;
                 case 1004:
                     if(mac == null && imei== null && openudID == null){
                         return null;
                     }
                 ukey = String.format("%s_%s_%s",mac,imei,openudID);
                 break;
                 default:
                 break;
             }
             if  (ukey == null || ukey.length() == 0){
                 return null;
             }
             this.ukey = ukey.toUpperCase();
             return this.ukey;
         }
         public Schema outputSchema(Schema input) {
             try{
                 Schema tupleSchema = new Schema();
                 tupleSchema.add(input.getField(0));
                 tupleSchema.add(input.getField(1));
                 return new Schema(new
                         Schema.FieldSchema(getSchemaName(this.getClass().getName().toLowerCase(),
                                 input),tupleSchema, DataType.TUPLE));
             }catch (Exception e){
                 return null;
             }
         }
    }
</tuple></code>
登录后复制
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前 By 尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
4 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

Java错误:Hadoop错误,如何处理和避免 Java错误:Hadoop错误,如何处理和避免 Jun 24, 2023 pm 01:06 PM

Java错误:Hadoop错误,如何处理和避免当使用Hadoop处理大数据时,常常会遇到一些Java异常错误,这些错误可能会影响任务的执行,导致数据处理失败。本文将介绍一些常见的Hadoop错误,并提供处理和避免这些错误的方法。Java.lang.OutOfMemoryErrorOutOfMemoryError是Java虚拟机内存不足的错误。当Hadoop任

在Beego中使用Hadoop和HBase进行大数据存储和查询 在Beego中使用Hadoop和HBase进行大数据存储和查询 Jun 22, 2023 am 10:21 AM

随着大数据时代的到来,数据处理和存储变得越来越重要,如何高效地管理和分析大量的数据也成为企业面临的挑战。Hadoop和HBase作为Apache基金会的两个项目,为大数据存储和分析提供了一种解决方案。本文将介绍如何在Beego中使用Hadoop和HBase进行大数据存储和查询。一、Hadoop和HBase简介Hadoop是一个开源的分布式存储和计算系统,它可

如何使用PHP和Hadoop进行大数据处理 如何使用PHP和Hadoop进行大数据处理 Jun 19, 2023 pm 02:24 PM

随着数据量的不断增大,传统的数据处理方式已经无法处理大数据时代带来的挑战。Hadoop是开源的分布式计算框架,它通过分布式存储和处理大量的数据,解决了单节点服务器在大数据处理中带来的性能瓶颈问题。PHP是一种脚本语言,广泛应用于Web开发,而且具有快速开发、易于维护等优点。本文将介绍如何使用PHP和Hadoop进行大数据处理。什么是HadoopHadoop是

探索Java在大数据领域的应用:Hadoop、Spark、Kafka等技术栈的了解 探索Java在大数据领域的应用:Hadoop、Spark、Kafka等技术栈的了解 Dec 26, 2023 pm 02:57 PM

Java大数据技术栈:了解Java在大数据领域的应用,如Hadoop、Spark、Kafka等随着数据量不断增加,大数据技术成为了当今互联网时代的热门话题。在大数据领域,我们常常听到Hadoop、Spark、Kafka等技术的名字。这些技术起到了至关重要的作用,而Java作为一门广泛应用的编程语言,也在大数据领域发挥着巨大的作用。本文将重点介绍Java在大

linux下安装Hadoop的方法是什么 linux下安装Hadoop的方法是什么 May 18, 2023 pm 08:19 PM

一:安装JDK1.执行以下命令,下载JDK1.8安装包。wget--no-check-certificatehttps://repo.huaweicloud.com/java/jdk/8u151-b12/jdk-8u151-linux-x64.tar.gz2.执行以下命令,解压下载的JDK1.8安装包。tar-zxvfjdk-8u151-linux-x64.tar.gz3.移动并重命名JDK包。mvjdk1.8.0_151//usr/java84.配置Java环境变量。echo'

PHP中的数据处理引擎(Spark, Hadoop等) PHP中的数据处理引擎(Spark, Hadoop等) Jun 23, 2023 am 09:43 AM

在当前的互联网时代,海量数据的处理是各个企业和机构都需要面对的问题。作为一种广泛应用的编程语言,PHP同样需要在数据处理方面跟上时代的步伐。为了更加高效地处理海量数据,PHP开发引入了一些大数据处理工具,如Spark和Hadoop等。Spark是一款开源的数据处理引擎,可以用于大型数据集的分布式处理。Spark的最大特点是具有快速的数据处理速度和高效的数据存

hadoop三大核心组件介绍 hadoop三大核心组件介绍 Mar 13, 2024 pm 05:54 PM

Hadoop的三大核心组件分别是:Hadoop Distributed File System(HDFS)、MapReduce和Yet Another Resource Negotiator(YARN)。

Java API 开发中使用 Hadoop Hbase 进行大数据存储 Java API 开发中使用 Hadoop Hbase 进行大数据存储 Jun 18, 2023 am 10:44 AM

随着现代社会对数据量需求的不断增加,处理海量数据的能力成为了计算机领域的一个热门话题。而在这个领域中,Hadoop与Hbase两个开源软件具备了非常重要的地位,它们被广泛用于大数据存储、处理和分析。本文主要介绍在JavaAPI开发中使用HadoopHbase进行大数据存储的相关内容。什么是Hadoop和HbaseHadoop是一个由Apache开发的、高

See all articles