更改 Spark GraphFrame 中的字符串列
Posted
技术标签:
【中文标题】更改 Spark GraphFrame 中的字符串列【英文标题】:Changing columns that are string in Spark GraphFrame 【发布时间】:2017-07-07 22:23:29 【问题描述】:我在 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 类型的架构不是 支持
有什么解决方法?
【问题讨论】:
您的列有混合类型吗?为什么不只为字符串编写它并仅将其应用于字符串列? @JoeK 因为我有很多列并且尝试找到一种方法而不是手动查找字符串列。 【参考方案1】:我认为您没有Any
类型的列,并且您不能从udf
返回不同的数据类型。您需要从 udf
返回单一数据类型。
如果您的列是字符串,那么您可以将udf
创建为
import org.apache.spark.sql.functions.udf
val removeDoubleQuotes = udf( (x:String) => s.replace("\"",""))
【讨论】:
以上是关于更改 Spark GraphFrame 中的字符串列的主要内容,如果未能解决你的问题,请参考以下文章
Gelly Library 可以用于 Flink 中类似于 Spark 中的 Graph Frame 的图形查询吗