注意:-可能有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: _*)
答案 0 :(得分:0)
您可以通过这种方式读取它,以读取目录id = 200393中的所有文件夹:
val df = spark.read.parquet("id=200393/*")
如果您只想选择某些日期,例如仅选择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:_*)
答案 1 :(得分:0)
如果要保留“ id”列,可以尝试以下操作:
val df = sqlContext
.read
.option("basePath", "id=200393/")
.parquet("id=200393/date=*")