从REST API处理CSV到Spark

时间:2017-07-07 02:01:12

标签: scala csv apache-spark

将rest api中的csv格式化结果直接读入spark的最佳方法是什么?

基本上有这个我知道我可以在scala中处理并保存到文件但是想要处理spark中的数据:

val resultCsv = scala.io.Source.fromURL(url).getLines()

1 个答案:

答案 0 :(得分:1)

这是可以做到的。

对于Spark 2.2.x

import scala.io.Source._
import org.apache.spark.sql.{Dataset, SparkSession}

var res = fromURL(url).mkString.stripMargin.lines.toList
val csvData: Dataset[String] = spark.sparkContext.parallelize(res).toDS()

val frame = spark.read.option("header", true).option("inferSchema",true).csv(csvData)
frame.printSchema()

将databricks库用于旧版Spark

import scala.io.Source._
import com.databricks.spark.csv.CsvParser

var res = fromURL(url).mkString.stripMargin.lines.toList
val csvData: Dataset[String] = spark.sparkContext.parallelize(res)

val csvParser = new CsvParser()
  .withUseHeader(true)
  .withInferSchema(true)

val frame: DataFrame = csvParser.csvRdd(sqlContext, rdd)
frame.printSchema()

注意:-我是Scala的新手,任何改进将不胜感激。

ref:here