【问题标题】:Java Spark UDF with input parameter as Map type输入参数为 Map 类型的 Java Spark UDF
【发布时间】:2019-05-21 16:29:37
【问题描述】:

我的配置单元表结构如下 -

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 );

现在我想将 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);

当我使用上面的代码时,它会给出 Map 类型的类型错误。 任何人都可以建议如何构建接受地图类型列并返回地图类型列的 JAVA spark udf。 谢谢。

【问题讨论】:

  • 解决了吗?如果解决了它是如何解决的?我在接受地图抛出错误 java.lang.RuntimeException: Unsupported literal type class java.util.HashMap 的 UDF 内部遇到问题

标签: java apache-spark hadoop hive user-defined-functions


【解决方案1】:

根据_Spark SQL Programming GuideMapType 的外部类型是java.util.Map,所以你应该实现:

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

【讨论】:

猜你喜欢
  • 2021-09-23
  • 2016-11-19
  • 1970-01-01
  • 2017-08-05
  • 2019-08-10
  • 2017-06-23
  • 1970-01-01
  • 2017-08-20
相关资源
最近更新 更多