更改 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 中的字符串列的主要内容,如果未能解决你的问题,请参考以下文章

sparkdataframe转换成字节流

Gelly Library 可以用于 Flink 中类似于 Spark 中的 Graph Frame 的图形查询吗

sparkdataframe需要主动缓存吗

如何打印 spark dataframe

将包含多种字符串日期格式的列转换为 Spark 中的 DateTime

在Google Colab中使用图框