2016-11-15 2 views
4

Ich schaue auf die reference manual und kann keine Dokumentation der bitweisen Operationen/Funktionen finden.Bitweise Operationen in Apache Pig?

Gibt es eine Möglichkeit, zum Beispiel eine bitweise UND-Operation (entspricht "A & B" in Hive) in einem Pig-Skript zu verwenden?

+0

Wenn es keine direkte Unterstützung gibt, können Sie DEFINE verwenden, um äußere Skripte in Perl, Bash usw. aufzurufen. Erstellen Sie einfache Skripte wie bitwise_or, bitwise_and und so weiter –

Antwort

0

Sie können benutzerdefinierte UDF dafür bereitstellen. z.B. siehe https://pig.apache.org/docs/r0.7.0/udf.html

In Schwein Skript würden Sie tun

REGISTER myudfs.jar; 

Und Beispiel für BinaryAND UDF:

package myudfs; 
import java.io.IOException; 
import org.apache.pig.EvalFunc; 
import org.apache.pig.data.Tuple; 
import org.apache.pig.impl.util.WrappedIOException; 

public class BitwiseAND extends EvalFunc (Integer) 
{ 
    public String exec(Tuple input) throws IOException { 
     // check input tuple: 
     if (input == null || input.size() < 2) 
      return null; 
     try{ 
      return (Integer)input.get(0) & (Integer)input.get(1); 
     }catch(Exception e){ 
      throw WrappedIOException.wrap("Caught exception processing input row ", e); 
     } 
    } 
} 

Hinweis: Dies ist nicht getestet, es ist nur aus dem Schwein UDF Seite kopiert.