package com.facebook.hive.udf;
import org.apache.hadoop.hive.ql.exec.Description;
import org.apache.hadoop.hive.ql.exec.UDFArgumentException;
import org.apache.hadoop.hive.ql.metadata.HiveException;
import org.apache.hadoop.hive.ql.udf.generic.GenericUDF;
import org.apache.hadoop.hive.serde2.objectinspector.ListObjectInspector;
import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspectorUtils;
import java.util.Arrays;
import java.util.List;
/**
* Sort the array passed as the parameter.
*/
@Description(name = "udfarraysort",
value = "_FUNC_(values) - Sorts the given array.")
public class UDFArraySort extends GenericUDF {
ListObjectInspector arrayOI = null;
@Override
public ObjectInspector initialize(ObjectInspector[] arguments)
throws UDFArgumentException {
arrayOI = (ListObjectInspector) arguments[0];
return ObjectInspectorUtils.getStandardObjectInspector(arrayOI);
}
@Override
public Object evaluate(DeferredObject[] arguments) throws HiveException {
List<?> arr = (List<?>) ObjectInspectorUtils.copyToStandardObject(arguments[0].get(), arrayOI);
Object[] arr_obj = arr.toArray();
Arrays.sort(arr_obj);
return Arrays.asList(arr_obj);
}
@Override
public String getDisplayString(String[] input) {
return new String();
}
}