Quantcast

calling UDF3 in Java

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

calling UDF3 in Java

jay hombal
This post has NOT been accepted by the mailing list yet.
This post was updated on .
hi,
 I am trying to call UDF3 function using the static function callUDF(udfName, cols),

calling code -

sales_DataDF.select(callUDF("returnFeatureValues", col("Outlet_Type"),lit("Grocery Store"), lit(1)));


UDF code --

package spark.cookbook.sql.udf;

import org.apache.spark.sql.api.java.UDF3;
import org.apache.spark.sql.api.java.UDF4;


public class ReturnFeatureValues implements UDF3<String, String, Integer, Double> {

    @Override
    public Double call(String columnName, String columnValue, Integer jobId) throws Exception {

        if (columnName.equals("Outlet_Type"))  {
            switch (columnValue) {
                case "Grocery Store": {
                    System.out.println("Test");
                    if (jobId==1) return 1.0; else return 0.0;
                }
                case "Supermarket Type1" : {
                    if (jobId==2) return 1.0; else return 0.0;
                }
                case "Supermarket Type2" : {
                    if (jobId==3) return 1.0; else return 0.0;
                } default: {
                    return 0.0;
                }
            }
        }
        if(columnName.equals("Outlet_Size")){
            switch(columnValue) {
                case "High": {
                    if (jobId==0) return 1.0; else return 0.0;
                }

                case "Small": {
                    if (jobId==1) return 1.0; else return 0.0;
                }
                case "Medium": {
                    if (jobId==2) return 1.0; else return 0.0;
                }
            }
        }
        if(columnName.equals("Outlet_LocationType")){
            switch(columnValue) {
                case "Tier 1": {
                    if (jobId==0) return 1.0; else return 0.0;
                }

                case "Tier 2": {
                    if (jobId==1) return 1.0; else return 0.0;
                }
                case "Tier 3": {
                    if (jobId==2) return 1.0; else return 0.0;
                }
            }
        }
        if(columnName.equals("Item_Type_Combined")){
            switch(columnValue) {
                case "Drinks": {
                    if (jobId==0) return 1.0; else return 0.0;
                }

                case "Food": {
                    if (jobId==1) return 1.0; else return 0.0;
                }
                case "Non-Consumable": {
                    if (jobId==2) return 1.0; else return 0.0;
                }
            }
        }
        if(columnName.equals("Item_Fat_Content_Combined")){
            switch(columnValue) {
                case "Low Fat": {
                    if (jobId==0) return 1.0; else return 0.0;
                }
                case "Regular": {
                    if (jobId==1) return 1.0; else return 0.0;
                }
            }
        }
        return 0.0;
    }
}

Loading...