获取地图中的多个列:rdd

时间:2018-03-27 03:17:55

标签: scala apache-spark rdd

我有一个DF,我明确地转换为RDD并尝试获取每列的记录。无法在地图中获取每个。以下是我的尝试:

val df = sql("Select col1, col2, col3, col4, col5 from tableName").rdd

结果df成为org.apache.spark.rdd.RDD[org.apache.spark.sql.Row]

的成员

现在我试图通过以下方式访问此RDD的每个元素:

val dfrdd = df.map{x => x.get(0); x.getAs[String](1); x.get(3)}

问题是,上述语句仅返回地图最后一次转换时出现的数据,即x.get(3)上的数据。有人能让我知道我做错了吗?

1 个答案:

答案 0 :(得分:3)

最后一行始终从map返回,在您的情况下,x.get(3)会被返回。

要返回多个值,您可以返回tuples,如下所示

val dfrdd = df.map{x => (x.get(0), x.getAs[String](1), x.get(3))}

希望这有帮助!