2016-05-23 90 views
0

我想用一列(使用字符串值)使用this question answers来扩展RDD表,但我不能通过这种方式添加列名称......我正在使用Scala。添加列到RDD Spark 1.2.1

是否有任何简单的方法为RDD添加列?

+0

检查此链接上的信息是否有帮助:http://stackoverflow.com/questions/29622867/add-a-new-calculated-column-from-2-values-in-rdd – User2130

+1

你能告诉我们一些东西吗?你正在尝试使用的代码? –

回答

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) 

在这个例子中的一个Tuple2RDD(也称为一对夫妇)转化成的Tuple3一个RDD,只需将函数应用于每个RDD元件。

显然,您必须对对象rddWithOneMoreColumn应用一个操作才能进行计算。事实上,Apache Spark懒惰地计算了所有转换的结果。

+0

但是如果我的原始RDD中的数据是来自Cassandra表的行呢? – Rada

+0

哪种类型是您从Cassandra中提取的对象? –

+3

“但是如果我的原始RDD中的数据是来自Cassandra表的行呢?”那么你必须告诉我们,因为我们大多数人都不是心灵感应。 –