![](/img/trans.png)
[英]How in Spark application create CSV file from DataFrame (Scala)?
[英]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.