RDD String到Spark csv Reader

时间:2019-05-30 14:17:57

标签: apache-spark apache-spark-sql

我想使用Spark CSV阅读器阅读RDD[String]。我这样做的原因是,在使用CSV阅读器之前,我需要过滤一些记录。

val fileRDD: RDD[String] = spark.sparkContext.textFile("file")

我需要使用spark CSV阅读器读取fileRDD。我不希望提交该文件,因为它会增加HDFS的IO。我调查了Spark CSV中的选项,但没有找到任何选项。

spark.read.csv(file)

样本数据

PHM|MERC|PHARMA|BLUEDRUG|50
CLM|BSH|CLAIM|VISIT|HSA|EMPLOYER|PAID|250
PHM|GSK|PHARMA|PARAC|70
CLM|UHC|CLAIM|VISIT|HSA|PERSONAL|PAID|72

如您所见,所有以PHM开头的记录具有不同的列数,而clm具有不同的列数。这就是我过滤然后应用架构的原因。 PHM和CLM记录具有不同的架构。

val fileRDD: RDD[String] = spark.sparkContext.textFile("file").filter(_.startWith("PHM"))


 spark.read.option(schema,"phcschema").csv(fileRDD.toDS())

1 个答案:

答案 0 :(得分:0)

从Spark 2.2开始,方法“ .csv”可以读取字符串数据集。可以通过以下方式实现:

val rdd: RDD[String] = spark.sparkContext.textFile("csv.txt")
// ... do filtering
spark.read.csv(rdd.toDS())