将列添加到 RDD Spark 1.2.1
Posted
技术标签:
【中文标题】将列添加到 RDD Spark 1.2.1【英文标题】:Add column to RDD Spark 1.2.1 【发布时间】:2016-05-23 19:07:55 【问题描述】:我正在尝试使用 this question answers 将我的 RDD 表扩展一列(带有字符串值),但我无法以这种方式添加列名...我正在使用 Scala。
有没有什么简单的方法可以向 RDD 添加一列?
【问题讨论】:
检查此链接上的信息是否有帮助:***.com/questions/29622867/… 你能告诉我们一些你正在尝试使用的代码吗? 【参考方案1】:Apache Spark 有一个函数式的方法来细化数据。从根本上说,RDD[T]
是某种对象集合(RDD
代表弹性分布式数据结构)。
按照函数式方法,您使用转换详细说明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)
在此示例中,Tuple2
的 RDD
(又名一对)转换为 Tuple3
的 RDD
,只需将函数应用于每个 RDD
元素。
显然,您必须对对象 rddWithOneMoreColumn
应用一个操作才能进行计算。事实上,Apache Spark 会延迟计算所有转换的结果。
【讨论】:
但是如果我在原始 RDD 中的数据是 Cassandra 表中的行呢? 您从 Cassandra 中提取的对象是哪种类型? "但是如果我在原始 RDD 中的数据是来自 Cassandra 表的行怎么办?"然后你必须告诉我们,因为我们大多数人都没有心灵感应。 @Rada:那么你仍然需要对行对象使用某种转换,或者你可以在 DataFrames 上使用 withColumn 方法。以上是关于将列添加到 RDD Spark 1.2.1的主要内容,如果未能解决你的问题,请参考以下文章
如何将 Spark/Scala RDD 合并/加入到 List 中,以便 RDD 中的每个值与每个 List 项一起获得一个新行