根据spark中给出的参数,从csv/json/parquet中读取数据帧



因此,我正在使用以下代码将csv文件读取到Spark(scala(中的数据帧中:

val dataframe=spark.read
.option("sep", args(0))
.option("encoding","UTF-8")
.schema(sch)
.csv(args(1))

其中args(0)是指定csv中分隔符的运行时参数(逗号、制表符等(,args(1)是读取csv的S3路径。

我想概括这个输入,这样,根据第三个参数args(2),我就可以用模式sch读取我的数据帧,csv、json或parquet格式。

实现这一目标的最佳方法是什么?

您可以使用.format指定输入文件格式(csv/json/parquet/etc.(,并使用.load加载文件。

val dataframe = args(2) match {
case "csv" => {spark.read
.format(args(2))
.option("sep", args(0))
.option("encoding","UTF-8")
.schema(sch)
.load(args(1))
} 
case _ => {spark.read
.format(args(2))
.option("encoding","UTF-8")
.schema(sch)
.load(args(1))
} 
}