Hadoop Pig Udf Scheme
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>
原文地址:Hadoop Pig Udf Scheme, 感谢原作者分享。

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen





Java-Fehler: Hadoop-Fehler, wie man damit umgeht und sie vermeidet Wenn Sie Hadoop zur Verarbeitung großer Datenmengen verwenden, stoßen Sie häufig auf einige Java-Ausnahmefehler, die sich auf die Ausführung von Aufgaben auswirken und zum Scheitern der Datenverarbeitung führen können. In diesem Artikel werden einige häufige Hadoop-Fehler vorgestellt und Möglichkeiten aufgezeigt, mit ihnen umzugehen und sie zu vermeiden. Java.lang.OutOfMemoryErrorOutOfMemoryError ist ein Fehler, der durch unzureichenden Speicher der Java Virtual Machine verursacht wird. Wenn Hadoop ist

Mit dem Aufkommen des Big-Data-Zeitalters sind Datenverarbeitung und -speicherung immer wichtiger geworden und die effiziente Verwaltung und Analyse großer Datenmengen ist für Unternehmen zu einer Herausforderung geworden. Hadoop und HBase, zwei Projekte der Apache Foundation, bieten eine Lösung für die Speicherung und Analyse großer Datenmengen. In diesem Artikel wird erläutert, wie Sie Hadoop und HBase in Beego für die Speicherung und Abfrage großer Datenmengen verwenden. 1. Einführung in Hadoop und HBase Hadoop ist ein verteiltes Open-Source-Speicher- und Computersystem, das dies kann

Da die Datenmenge weiter zunimmt, sind herkömmliche Datenverarbeitungsmethoden den Herausforderungen des Big-Data-Zeitalters nicht mehr gewachsen. Hadoop ist ein Open-Source-Framework für verteiltes Computing, das das Leistungsengpassproblem löst, das durch Einzelknotenserver bei der Verarbeitung großer Datenmengen verursacht wird, indem große Datenmengen verteilt gespeichert und verarbeitet werden. PHP ist eine Skriptsprache, die in der Webentwicklung weit verbreitet ist und die Vorteile einer schnellen Entwicklung und einfachen Wartung bietet. In diesem Artikel wird die Verwendung von PHP und Hadoop für die Verarbeitung großer Datenmengen vorgestellt. Was ist HadoopHadoop ist

Java-Big-Data-Technologie-Stack: Verstehen Sie die Anwendung von Java im Bereich Big Data wie Hadoop, Spark, Kafka usw. Da die Datenmenge weiter zunimmt, ist die Big-Data-Technologie im heutigen Internetzeitalter zu einem heißen Thema geworden. Im Bereich Big Data hören wir oft die Namen Hadoop, Spark, Kafka und andere Technologien. Diese Technologien spielen eine entscheidende Rolle, und Java spielt als weit verbreitete Programmiersprache auch im Bereich Big Data eine große Rolle. Dieser Artikel konzentriert sich auf die Anwendung von Java im Großen und Ganzen

1: Installieren Sie JDK1. Führen Sie den folgenden Befehl aus, um das JDK1.8-Installationspaket herunterzuladen. wget--no-check-certificatehttps://repo.huaweicloud.com/java/jdk/8u151-b12/jdk-8u151-linux-x64.tar.gz2. Führen Sie den folgenden Befehl aus, um das heruntergeladene JDK1.8-Installationspaket zu dekomprimieren . tar-zxvfjdk-8u151-linux-x64.tar.gz3. Verschieben Sie das JDK-Paket und benennen Sie es um. mvjdk1.8.0_151//usr/java84. Konfigurieren Sie Java-Umgebungsvariablen. Echo'

Da die Datenmenge weiter zunimmt, ist die Datenverarbeitung in großem Maßstab zu einem Problem geworden, dem sich Unternehmen stellen und das sie lösen müssen. Herkömmliche relationale Datenbanken können diesen Bedarf nicht mehr decken. Für die Speicherung und Analyse großer Datenmengen sind verteilte Computerplattformen wie Hadoop, Spark und Flink die beste Wahl. Im Auswahlprozess von Datenverarbeitungstools erfreut sich PHP als einfach zu entwickelnde und zu wartende Sprache bei Entwicklern immer größerer Beliebtheit. In diesem Artikel werden wir untersuchen, wie und wie PHP für die Verarbeitung großer Datenmengen genutzt werden kann

Im aktuellen Internetzeitalter ist die Verarbeitung großer Datenmengen ein Problem, mit dem sich jedes Unternehmen und jede Institution auseinandersetzen muss. Als weit verbreitete Programmiersprache muss PHP auch in der Datenverarbeitung mit der Zeit gehen. Um große Datenmengen effizienter zu verarbeiten, hat die PHP-Entwicklung einige Big-Data-Verarbeitungstools wie Spark und Hadoop eingeführt. Spark ist eine Open-Source-Datenverarbeitungs-Engine, die für die verteilte Verarbeitung großer Datenmengen verwendet werden kann. Das größte Merkmal von Spark ist seine schnelle Datenverarbeitungsgeschwindigkeit und effiziente Datenspeicherung.

Redis und Hadoop sind beide häufig verwendete Systeme zur verteilten Datenspeicherung und -verarbeitung. Es gibt jedoch offensichtliche Unterschiede zwischen den beiden hinsichtlich Design, Leistung, Nutzungsszenarien usw. In diesem Artikel werden wir die Unterschiede zwischen Redis und Hadoop im Detail vergleichen und ihre anwendbaren Szenarien untersuchen. Redis-Übersicht Redis ist ein speicherbasiertes Open-Source-Datenspeichersystem, das mehrere Datenstrukturen und effiziente Lese- und Schreibvorgänge unterstützt. Zu den Hauptfunktionen von Redis gehören: Speicher: Redis
