0

如何将 scala uaparser 应用于数据框的列。数据框中列中的每一行的形式为 -

Mozilla/5.0 (iPhone; CPU iPhone OS 5_1_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9B206 Safari/7534.48.3"

我正在尝试某种形式-

def getTrnUiEvent(hiveDf:org.apache.spark.sql.DataFrame): Unit = {
val trnUiEventDf = hiveDf
  .withColumn("application_browser_user_agent", getUAFamily(hiveDf("application_browser_user_agent")))}


 val getUAFamily = udf((ua_string:org.apache.spark.sql.DataFrame) => {
Parser.get.parse(ua_string.toString()).userAgent.family})

我收到上述错误。我也尝试过其他方法来完成上述操作,但结果相同。我无法理解的是 uaparser 如何处理数据框列的每一行。hiveDf("application_browser_user_agent") 的每一行看起来都像上面粘贴的字符串示例。

我看过的链接 - 将函数应用于 Spark Dataframe Column

我是否先将其转换为 RDD,然后使用 uaparser 处理 RDD 的每一行?

uaparser 的链接 - https://github.com/ua-parser/uap-scala

错误信息 -

/Users/pojha/github/Bacon/scala/bacon/src/main/scala/baconParallel.scala:62: 


No TypeTag available for String


[error]   val getUAFamily = udf((ua_string:org.apache.spark.sql.DataFrame) => {
4

0 回答 0