【问题标题】:How to read from multiple folders into single Dataframe如何从多个文件夹读取到单个数据框
【发布时间】:2018-05-30 20:44:41
【问题描述】:

我在每天创建的文件夹中有数据。

例如:以下是 AWS S3 中全年(2017 年)的数据文件夹格式,即 365 个文件夹

student_id=20170415
student_id=20170416
student_id=20170417
student_id=20170418

每个文件夹都有多个拼花格式的数据分区。

现在我只想读取过去 6 个月(180 天/180 个文件夹)的数据并在几列上执行一些逻辑。

如何将过去的 180 个文件夹读入单个数据框,我不想使用联合(即,不想将每天的数据文件夹分别读入每个单独的数据框,然后再将所有文件夹合并成巨型数据框,不,我不想那样做)。

我正在使用 Spark 2.0 和 Scala

【问题讨论】:

    标签: scala apache-spark spark-dataframe


    【解决方案1】:

    您可以为目录名称创建一个regex,如下所示,如果您只需要文件中的内容,请使用 SparkSession.read,如果您想要 [K,V] 对,例如 [filename,record,请使用 sparkContext.wholeTextFiles ]

    val inputpath="/root/path/todir/2015{0[1-6]}[0-3]*"//reads only first six months folder(01-06)
    spark.sparkContext.wholeTextFiles(inputpath).toDF().show(1000) //Gives [K,V]
    val data=spark.read.csv(inputpath).show(10000) //Gives only content
    

    两者都会产生一个 DF。对于 sparkSession.read,大小将是文件夹数 * 每个文件中的行数,对于 SparkContext.wholeTextFiles,它将是文件夹数 * 文件数

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-01-24
      • 2019-11-18
      • 2020-03-31
      • 1970-01-01
      • 1970-01-01
      • 2023-02-24
      • 2018-02-23
      • 2017-04-21
      相关资源
      最近更新 更多