当前位置: 首页 > 知识库问答 >
问题:

如何为数据帧中的复杂列创建包含数组(案例类)的 udf

戚同
2023-03-14

我有一个数据帧,它有一个数组类型的复杂列数据类型

共有1个答案

令狐宜民
2023-03-14

由于JVM的限制,Scala以编码形式存储标识符,目前Spark无法将##字段映射到$hash$hashfield

一种可能的解决方案是从原始行中手动提取字段(但您需要知道df中字段的顺序,您可以使用df.schema):

val myUdf = udf { (struct: Row) =>
  // Pattern match struct:
  struct match {
    case Row(a: String) => Foo(a)
  }

  // .. or extract values from Row
  val `##a` = struct.getAs[String](0)
}
 类似资料:
  • 我有两个数据帧df1和df2。df1有一个String类型的列键 当df1.key出现在df2.keys中时,我想连接2个数据帧 然而,我正在寻找一个完整的单词匹配。Contains方法连接部分匹配的行。我的意思是,在上面的示例中,我不希望k2与[pk1,pk2]连接,因为数组不包含密钥k2,它包含pk2。 有人能建议如何加入这个案子吗?请用JAVA提供示例。

  • 问题内容: 我有一个如下所示的pandas数据框,并通过一列保存数据组: 现在,我想创建新的数据框(名为df_w,df_x,df_y,df_z),这些数据框仅保存其原始数据中的数据,并在一些可迭代的列表(例如列表)中进行最佳组合: 有没有使用groupby,apply和/或applymap和函数来实现此目的的智能(矢量化熊猫)方法? 我当时正在考虑对数据框进行迭代,但这似乎不是很优雅。 预先感谢您

  • 如何创建包含ArrayList的二维数组?比如:

  • 问题内容: 我从使用方法获得像素。像素存储在名为的数组中。在对数据数组进行一些操作之后,我需要再次创建一个,以便可以将其传递到一个模块,该模块将显示来自此数据数组的修改后的图像,但我对此感到困惑。 问题答案: 然后再次设置像素。 PS:如评论中所述,请使用@TacticalCoder的答案

  • 如何查询具有复杂类型(如映射/数组)的RDD?例如,当我编写此测试代码时: 我认为语法应该是这样的: 或 但我明白了 无法访问类型MapType(StringType,StringType,true)中的嵌套字段 和 组织。阿帕奇。火花sql。催化剂错误。包$TreeNodeException:未解析的属性 分别地

  • 我有一个包含18个数据帧的列表: 所有数据帧都有一个公共id列,因此很容易将它们与pd连接在一起。一次合并2个。有没有一种方法可以一次将它们连接起来,从而使dfList作为单个数据帧返回?