我尝试使用this question answers将我的RDD表扩展一列(使用字符串值)但我无法以这种方式添加列名...我使用Scala。
有没有简单的方法将列添加到RDD?
答案 0 :(得分:2)
Apache Spark有一个功能方法来详细说明数据。从根本上说,RDD[T]
是某种对象集合(RDD
代表弹性分布式数据结构)。
遵循功能方法,您使用转换详细说明RDD
内的对象。转换从前一个构造一个新的RDD
。
转换的一个例子是map
方法。使用map
,您可以在所需的每种其他类型的对象中转换RDD
的每个对象。因此,如果您有一个表示行的数据结构,则可以在具有添加行的新结构中对该结构进行转换。
例如,请使用以下代码。
val rdd: (String, String) = sc.pallelize(List(("Hello", "World"), ("Such", "Wow"))
// This new RDD will have one more "column",
// which is the concatenation of the previous
val rddWithOneMoreColumn =
rdd.map {
case(a, b) =>
(a, b, a + b)
在此示例中,RDD
Tuple2
(也称为一对)转换为RDD
Tuple3
,只需将函数应用于每个RDD
元件。
显然,您必须对对象rddWithOneMoreColumn
应用操作才能进行计算。实际上,Apache Spark懒惰地计算了所有转换的结果。