【发布时间】:2020-02-27 12:46:25
【问题描述】:
我是 Scala/Spark 世界的新手。
我有一个名为 person 的 spark 数据集(带有案例类的 df)。
scala> val person_with_contact = person.map(r => (
| r.id,
| r.name,
| r.age
| )).toDF()
现在,我想向该数据集的每条记录添加一个地址属性列表(如 apt_no、street、city、zip)。获取地址属性列表,我有一个函数,它将人员的 id 作为输入并返回一个包含所有地址属性及其对应值的映射。
我尝试了以下方法和其他一些 Stack Overflow 建议的方法,但我还不能解决它。 (参考 - 静态 col ex - Spark, add new Column with the same value in Scala)
scala> val person_with_contact = person.map(r => (
| r.id,
| r.name,
| r.age,
| getAddress(r.id)
| )).toDF()
最终的数据框应具有以下列。
id, name, age, apt_no, street, city, zip
【问题讨论】:
-
@Shaido,感谢您的回复。我已经有一个 UDF 函数。我不确定如何从这个 UDF 返回地址属性列表,以便将它们作为单独的列添加到新数据帧中。
-
@HristoIliev,感谢您的回复。每个人只有一个地址,由 4 个属性表示。我有一个 UDF 函数,它将一个人的 id 作为输入并将 4 个属性作为地图返回。我想用地址字段加入
id, name, age,即。apt_no, street, city, zip。最后,它应该是一个包含所有 7 个属性的单个数据框。 -
@ManasMukherjee,在第二次阅读您的问题时,我得知您正在添加 属性列表,这就是我删除评论的原因。
person是 DataFrame 还是 RDD? -
person是使用case class创建的数据集,其中 id、name 和 age 作为属性。
标签: scala apache-spark apache-spark-sql