[英]How can I read multiple parquet files in spark scala
注意:- 可能有 100 個日期文件夾,我只需要選擇特定的(比如說 25,26 和 28)
有沒有比下面更好的方法?
import org.apache.spark._
import org.apache.spark.SparkContext._
import org.apache.spark.sql._
val spark = SparkSession.builder.appName("ScalaCodeTest").master("yarn").getOrCreate()
val parquetFiles = List("id=200393/date=2019-03-25", "id=200393/date=2019-03-26", "id=200393/date=2019-03-28")
spark.read.format("parquet").load(parquetFiles: _*)
上面的代碼正在工作,但我想做如下的事情 -
val parquetFiles = List()
parquetFiles(0) = "id=200393/date=2019-03-25"
parquetFiles(1) = "id=200393/date=2019-03-26"
parquetFiles(2) = "id=200393/date=2019-03-28"
spark.read.format("parquet").load(parquetFiles: _*)
您可以通過這種方式讀取它以讀取目錄 id=200393 中的所有文件夾:
val df = spark.read.parquet("id=200393/*")
如果您只想 select 某些日期,例如僅 2019 年 9 月:
val df = spark.read.parquet("id=200393/2019-09-*")
如果您有一些特殊的日子,您可以在列表中列出日期
val days = List("2019-09-02", "2019-09-03")
val paths = days.map(day => "id=200393/" ++ day)
val df = spark.read.parquet(paths:_*)
如果你想保留列“id”,你可以試試這個:
val df = sqlContext
.read
.option("basePath", "id=200393/")
.parquet("id=200393/date=*")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.