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

Spark DataFrame实例一个新列

曹景铄
2023-03-14

我有一个dataframe,我在我的第一列groupByKey上有一个字符串数组,我想在我的dataframe的新列中实例一个新对象。

+-----------+-----------------------------------------------------------+
|name       |Thing                                                      |
+-----------+-----------------------------------------------------------+
|253        |[a, b, c, d, e]                                            |
|095        |[f, g]                                                     |
|282        |[h, i, j]                                                  |
+-----------+-----------------------------------------------------------+

我将实例的对象具有以下结构:

public MyObject(String name,
               String[] Thing)
 case class Myclass(name: String, Thing: Array[String])
  def myFunction(name : String, Thing: Array[String]): MyObject= {
  return new MyObject(name , Thing)
}
var my_df = my_old_df.map(line=>(line(0).asInstanceOf[String],line(1).asInstanceOf[String]))
  .groupByKey()

val my_next_df : DataFrame= my_df.map(line => Myclass(line._1.toString,line._2.toArray)).toDF()

val myudf= sqlContext.udf.register("myudf", myFunction _)

val my_df_problem  = my_next_df.withColumn("Object", myudf($"name", $"Thing"))

共有1个答案

万俟修诚
2023-03-14

似乎UDF必须返回myclass类型。

val myudf= sqlContext.udf
      .register("myudf", (name : String, thing: Array[String]) => new MyClass(name , thing))
 类似资料:
  • 问题内容: 我正在使用一个设置,其中每个保留的对象都有其自己的实例。但是,这实际上意味着这些领域都在主线程上。 现在这也意味着,如果我想修改Realm,我要么需要在主线程上执行此操作(对于小型数据集就可以,但是我真的不想对大型数据集进行此操作),或者需要在后台线程上执行此操作,并立即刷新 每个 Realm实例(这对于事件总线来说很简单)。 和 但是,假设我在主线程上打开了大约5-7个领域实例(因为

  • 问题内容: 苹果报价: firstHalf切片和secondHalf切片都不分配自己的任何新存储。取而代之的是,每个视图都显示了不存在数组的存储视图。 当我尝试如下更改时: 更改的值,但原始数组保持不变(等于19 等于2),所以在后台发生了什么。我是否通过更改数组切片来实例化新数组?提前致谢。 问题答案: 是的,标准库的集合类型(包括和)都具有写时复制行为。这意味着它们可以与其他集合 共享 其元素

  • 我已经完成了一些Java教程,它们都说在调用类时创建一个新变量。这是为什么?我已经测试了一些代码,但它没有这样做。我已经使用python很长一段时间了,所以我习惯于使用动态语言。 请看下面我一直在玩的一些代码: 谢谢你的时间。

  • 我正在将Vue与一个名为AEM的CMS进行集成,该CMS基本上可以像Vue一样作为组件基础系统工作。而不是有一个网页和进口的。vue文件,此CMS上的每个组件都是一个新的vue实例(新的vue({…}))。因此,在我的页面上,有许多Veu实例使用同一个存储(vuex)彼此通信。 这实际上工作得很好,但我有一个场景,当我需要一个CMS组件在另一个组件中时。由于这两个组件都是唯一的vue实例,并且父级

  • 有人能解释一下下面的代码是如何毫无例外地工作的吗。我在想,当为星期天创建新实例时,它也会为星期一(星期天内)创建一个新实例,然后再为星期天(星期一内)创建一个新实例,以此类推。。。类似递归的东西,因为它们都是课程周的一部分。但我的理解是错误的,因为下面的代码运行良好。 我有这个疑问,当我读到java枚举。

  • 本章学习 Qt 的基本功能 例 1,简单的窗口 这个简单的小例子展示的是一个小窗口。但是我们可以在这个小窗口上面做很多事情,改变大小,最大化,最小化等,这需要很多代码才能实现。这在很多应 用中很常见,没必要每次都要重写这部分代码,Qt 已经提供了这些功能。PyQt5 是一个高级的工具集合,相比使用低级的工具,能省略上百行代码。 #!/usr/bin/python3 # -*- coding: ut