将列添加到RDD Spark 1.2.1

时间:2016-05-23 19:07:56

标签: scala apache-spark

我尝试使用this question answers将我的RDD表扩展一列(使用字符串值)但我无法以这种方式添加列名...我使用Scala。

有没有简单的方法将列添加到RDD?

1 个答案:

答案 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懒惰地计算了所有转换的结果。