更改Spark GraphFrame中字符串的列

时间:2017-07-07 22:23:29

标签: scala apache-spark user-defined-functions graphframes

我在spark 2.0和scala中使用GraphFrame。

我需要从字符串类型的列中删除双引号(在许多列中)。 我尝试使用UDF执行此操作,如下所示:

import org.apache.spark.sql.functions.udf

val removeDoubleQuotes = udf( (x:Any) =>
    x match{
      case s:String => s.replace("\"","")
      case other => other
    }
  )

我收到以下错误,因为GraphFrame不支持Any类型。

  

java.lang.UnsupportedOperationException:类型为Any的架构不是   支持的

该解决方法是什么?

1 个答案:

答案 0 :(得分:0)

我认为您没有类型为Any的列,并且您无法从udf返回不同的数据类型。您需要从udf返回单个数据类型。

如果您的列是字符串,那么您可以创建udf作为

import org.apache.spark.sql.functions.udf

val removeDoubleQuotes = udf( (x:String) => s.replace("\"",""))