You could start with this:

https://github.com/edwardcapriolo/hive-geoip

On Tue, Sep 4, 2012 at 10:42 AM, Ravi Shetye <ravishe...@gmail.com> wrote:
> Hi
> I am trying to register a java udf which looks like
>
> public final class IP_2_GEO extends UDF {
> String geo_file;
> String geo_type;
> public IP_2_GEO(String geo_file, String geo_type) {
> this.geo_file = geo_file;
> this.geo_type = geo_type;
> }
>
> public Text evaluate(final Text ip) {
> //IP to geo conversion based on the level passed in 'geo_type' and by look
> up in 'geo_file'
>
> return new Text(geoString);
> }
> }
>
> I had similar udf in pig and could register it by using
> define ip_2_city com.udfs.common.IP_2_GEO('$geo_file', 'city');
> define ip_2_country com.udfs.common.IP_2_GEO('$geo_file', 'country');
>
> but in hive I am not able to register and  initialize the udf
>
> hive> create temporary function ip_2_city as
> "udfs.common.IP_2_GEO('/mnt/ravi/GeoLiteCity.dat','city')";
> FAILED: Class udfs.common.IP_2_GEO('/mnt/ravi/GeoLiteCity.dat','city') not
> found
> FAILED: Execution Error, return code 1 from
> org.apache.hadoop.hive.ql.exec.FunctionTask
> hive> create temporary function ip_2_city as "udfs.common.IP_2_GEO()";
> FAILED: Class udfs.common.IP_2_GEO() not found
> FAILED: Execution Error, return code 1 from
> org.apache.hadoop.hive.ql.exec.FunctionTask
> hive> create temporary function ip_2_city as "udfs.common.IP_2_GEO";
> OK
> Time taken: 0.0080 seconds
>
>
> 1) Is there an alternate way to achieve what I expect from the command
>
> hive> create temporary function ip_2_city as
> "udfs.common.IP_2_GEO('/mnt/ravi/GeoLiteCity.dat','city')"; ?
>
> 2) What is the common practice of converting ip to City and Country in hive?
> --
> RAVI SHETYE

Reply via email to