如何将 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) => {