我有一个.csv文件,我读到了RDD:
val dataH = sc.textFile(filepath).map(line => line.split(",").map(elem => elem.trim))
我想按顺序遍历此RDD并比较相邻元素,此比较仅取决于数据结构的一列。不可能迭代RDD,所以相反,我们的想法是首先将RDD列转换为数据集或数据帧。
您可以将RDD转换为这样的数据集(如果我的结构为RDD[Array[String]]
,则该数据集不起作用:
val sc = new SparkContext(conf)
val sqc = new SQLContext(sc)
import sqc.implicits._
val lines = sqc.createDataset(dataH)
如何从dataH
获取我感兴趣的一列,然后从中创建数据集?
我正在使用Spark 1.6.0。
答案 0 :(得分:1)
您可以将数组映射到所需的索引,例如:
dataH.map(arr => arr(0)).toDF("col1")
或者更安全(避免在索引超出范围时出现异常):
dataH.map(arr => arr.lift(0).orElse(None)).toDF("col1")