Как я могу прочитать несколько файлов паркета в Spark Scala - PullRequest
1 голос
/ 04 октября 2019

Ниже приведены некоторые папки, которые могут обновляться со временем. У них есть несколько файлов .parquet. Как я могу прочитать их в кадре данных Spark в scala?

  • "id = 200393 / date = 2019-03-25"
  • "id = 200393 / date = 2019-03-26 "
  • " id = 200393 / date = 2019-03-27 "
  • " id = 200393 / date = 2019-03-28 "
  • " id =200393 / дата = 2019-03-29 "и так далее ...

Примечание: - Может быть 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: _*)

Ответы [ 2 ]

0 голосов
/ 05 октября 2019

Если вы хотите сохранить столбец 'id', вы можете попробовать это:

val df = sqlContext
     .read
     .option("basePath", "id=200393/")
     .parquet("id=200393/date=*")
0 голосов
/ 04 октября 2019

Вы можете прочитать его таким образом, чтобы прочитать все папки в каталоге id = 200393:

val df  = spark.read.parquet("id=200393/*")

Если вы хотите выбрать только некоторые даты, например, только сентябрь 2019:

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:_*)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...