【问题标题】:Read a path from a dataframe column and add another column from the dataframe从数据框列中读取路径并从数据框中添加另一列
【发布时间】:2021-05-18 07:49:35
【问题描述】:

我有一个如下的数据框

id, path
id1, path1
id2, path2
id3, path3

我想读取上述路径中的 parquet 文件,并在将数据读取到其各自的输出后添加 id 列,最后合并所有结果

代码:

case class cls_lyr(id: String, path: String)
val selColDf = df.select("id", "path").dropDuplicates
val newdf = selColDf.as[cls_lyr].take(selColDf.count.toInt).foreach(t => {
                      var id = t.id
                      var path= t.path
                      val lkpDf = spark.read.parquet(path)
                      val finalDf = lkpDf.withColumn("portf_id", lit(id))
                      }
                  )

如何合并来自 3 条路径的数据?有没有其他更好的方法可以做到这一点?

【问题讨论】:

    标签: scala apache-spark


    【解决方案1】:

    您可以使用map 而不是foreach,这样您将获得一个数据帧数组,您可以使用unionAll 将其reduce 转换为单个数据帧:

    selColDf.as[cls_lyr]
        .collect
        .map(t => spark.read.parquet(t.path).withColumn("portf_id", lit(t.id)))
        .reduce(_ unionAll _)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-13
      • 1970-01-01
      • 1970-01-01
      • 2019-05-05
      • 1970-01-01
      相关资源
      最近更新 更多