我有一个名为source的DataFrame,一个来自mysql的表
val source = sqlContext.read.jdbc(jdbcUrl, "source", connectionProperties)
我已将其转换为rdd
val sourceRdd = source.rdd
但它的RDD [Row]我需要RDD [String] 进行像
这样的转换source.map(rec => (rec.split(",")(0).toInt, rec)), .subtractByKey(), etc..
谢谢
答案 0 :(得分:7)
您可以在Row. mkString(sep: String): String
这样的电话中使用map
方法:
val sourceRdd = source.rdd.map(_.mkString(","))
您可以根据需要更改","
参数。
希望这对你有所帮助,最好的问候。
答案 1 :(得分:1)
你的架构是什么?
如果它只是一个字符串,您可以使用:
import spark.implicits._
val sourceDS = source.as[String]
val sourceRdd = sourceDS.rdd // will give RDD[String]
注意:在Spark 1.6中使用sqlContext而不是spark - spark是SparkSession,它是Spark 2.0中的新类,是SQL功能的新入口点。它应该用于代替Spark 2.x中的SQLContext
您也可以创建自己的案例类。
你也可以映射行 - 这里的源是DataFrame类型,我们在map函数中使用partial函数:
val sourceRdd = source.rdd.map { case x : Row => x(0).asInstanceOf[String] }.map(s => s.split(","))