package com.caseystella.util.pig.udf; import com.google.common.base.Splitter; import com.google.common.collect.Iterables; import org.apache.pig.EvalFunc; import org.apache.pig.data.Tuple; import java.io.IOException; /** * Created by cstella on 8/24/15. */ public class GetToken extends EvalFunc<String> { String splitter; int index; /** * Gets the index'th element of a tuple. Including negative indexing (-1 is last element) * @param splitter * @param index */ public GetToken(String splitter, String index) { this.splitter = splitter; this.index = Integer.parseInt(index); } @Override public String exec(Tuple tuple) throws IOException { String in = (String) tuple.get(0); Iterable<String> splits = Splitter.on(splitter).split(in); int size = Iterables.size(splits); if(index >= 0 ) { return Iterables.get(splits, index, null); } else { return Iterables.get(splits, size + index, null); } } }