package com.facebook.hive.udf; import org.apache.hadoop.hive.ql.exec.Description; import org.apache.hadoop.hive.ql.exec.UDF; @Description(name = "udflogisticregression", value = "_FUNC_(values) - Randomly samples from an 0-indexed index with weight proportional to arguments.") public class UDFLogisticRegression extends UDF { public Integer evaluate(Double... vals) { double sum = 0.0; for (int ii = 0; ii < vals.length; ++ii) { if (vals[ii] == null) { return null; } sum += vals[ii]; } double r = Math.random(); for (int ii = 0; ii < vals.length; ++ii) { if (r < vals[ii] / sum) { return Integer.valueOf(ii); } r -= vals[ii] / sum; } assert false; return null; } }