简体   繁体   English

Java Spark UDF,输入参数为Map类型

[英]Java Spark UDF with input parameter as Map type

I have hive table structure as below - 我的蜂巢表结构如下-

create table sessionize_data (
ip                  string                                      
cookie                  string                                      
userid                  string                                      
dattime                 string                                      
timestamp               bigint                                      
referrer                string                                      
request                 string                                      
useragent               string                                      
absoluteips             string                                      
xff                     string                                      
calltype                string                                      
url                     string                                      
unique_visitor          string                                      
referrer_url            string                                      
referrer_dqp            map<string,string>                          
dqp                     map<string,string>                          
params                  map<string,string>                          
events_subcategory      map<string,string>                          
session_id              string                                      
source                  string                                      
dwelltime               string                                      
traffic                 string                                      
viewdate                string );

Now I want to pass params map column in spark UDF as a parameter - I did it using following code- 现在,我想将spark UDF中的params map列作为参数传递-我使用以下代码进行了操作-

spark.udf().register("populateUrl",
    new UDF3 < HashMap < String, String > , String, String, HashMap < String, String >> () {
        private static final long serialVersionUID = 1 L;
        @Override
        public HashMap < String, String > call(HashMap < String, String > params, String url_type, String source)
        throws Exception {
            // some operation here
            return params;
        }
    }, DataTypes.StringType);

When I use above code it is giving type error for Map type. 当我使用上面的代码时,它给出了Map类型的类型错误。 Can anybody suggest how to build JAVA spark udf which accepts Map type column and returns Map type column. 有人可以建议如何构建接受Map type列并返回Map type列的JAVA spark udf Thanks. 谢谢。

根据_Spark SQL编程指南MapType的外部类型为java.util.Map因此您应该实现:

UDF3<java.util.Map<String, String>, String, String, java.util.Map<String, String>>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM