Java Spark UDF с входным параметром в качестве типа карты - PullRequest
0 голосов
/ 21 декабря 2018

У меня есть структура таблицы улья, как показано ниже -

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

Теперь я хочу передать карту параметров столбец в искровой UDF в качестве параметра - я сделал это, используя следующий код-

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

Когда я использую приведенный выше код, он выдает ошибку типа для типа карты.Кто-нибудь может подсказать, как построить JAVA spark udf , который принимает столбец типа карты и возвращает столбец типа карты.Спасибо.

1 Ответ

0 голосов
/ 21 декабря 2018

В соответствии с _Spark SQL Programming Guide внешний тип для MapType равен java.util.Map, поэтому вы должны реализовать:

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