import org.apache.spark.sql.SparkSession
import org.apache.spark.sql.Encoders
val spark = SparkSession.builder().getOrCreate()
case class IrisSchema(Type: Int, PetalWidth: Int, PetalLength: Int,
SepalWidth: Int, SepalLength: Int)
var irisSchema = Encoders.product[IrisSchema].schema
var irisDf = spark.read.format("csv"). // Use "csv" regardless of TSV or CSV.
option("header", "true"). // Does the file have a header line?
option("delimiter", "\t"). // Set delimiter to tab or comma.
schema(irisSchema). // Schema that was built above.
load("iris.tsv")
irisDf.show(5)
1条答案
按热度按时间bxfogqkk1#
下面是装入制表符分隔值(TSV)文件并应用模式的完整Spark 2.0示例。
我以Iris data set in TSV format from UAH.edu为例。下面是该文件的前几行:
要强制执行架构,可以使用以下两种方法之一以编程方式构建该架构:
A.使用
StructType
创建模式:B.或者,使用
case class
和Encoders
创建模式(此方法不太冗长):一旦创建了模式,就可以使用
spark.read
读入TSV文件。请注意,只要正确设置了option("delimiter", d)
选项,实际上也可以读取逗号分隔值(CSV)文件或任何分隔文件。此外,如果您的数据文件具有标题行,请确保设置option("header", "true")
。以下是完整的最终代码:
下面是输出结果: