繁体   English   中英

使用 scala 从 csv(url 源)创建 DataFrame

[英]Create a DataFrame from a csv (url source) with scala

我有一个 csv 用逗号分隔,在线存储(https: //xxx. com/xx/xx.csv) 我可以这样得到:

import scala.io.Source

val stringCsv = Source.fromURL(url,"UTF-8").mkString

现在我想将stringCsv转换为没有 header 的 Spark DataFrame

我猜 Source 是 scala.io.Source ,它将返回一个迭代器。 您可以从中取出 LineIterator,跳过第一行,然后将其变成 DataFrame。

这将像这样工作:

val raw = Source.fromURL(url,"UTF-8")

// skip the header
raw.next

// convert to DF
import spark.implicits._
val df = raw.toList.toDF

// here you end up with a dataframe of strings (So a row with a single column). 

但这对于更大的文件来说效率很低。 火花方式将是:

import org.apache.spark.SparkFiles
spark.sparkContext.addFile(spark.sparkContext.addFile(url)) 
val df = spark.read.format("csv")
  .option("sep", ";")
  .option("inferSchema", "true")
  .option("header", "true")
  .load("file://"+SparkFiles.get("yourfile.csv"))

在那里你可以选择定义你的输入是否有 header (除了很多其他的东西)。 诀窍可能是spark.sparkContext.addFile(url)在文件名而不是完整路径下注册您的文件(所以 URL 就像https://raw.githubusercontent.com/IBM/knative-serverless/master/src/destination /cities.csv将在cities.csv下注册)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM