我有一个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)
上的数据。有人能让我知道我做错了吗?
答案 0 :(得分:3)
最后一行始终从map
返回,在您的情况下,x.get(3)
会被返回。
要返回多个值,您可以返回tuples
,如下所示
val dfrdd = df.map{x => (x.get(0), x.getAs[String](1), x.get(3))}
希望这有帮助!