将rest api中的csv格式化结果直接读入spark的最佳方法是什么?
基本上有这个我知道我可以在scala中处理并保存到文件但是想要处理spark中的数据:
val resultCsv = scala.io.Source.fromURL(url).getLines()
答案 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