【问题标题】:Get the path of all files along with data in Spark Scala rdd/dataframe获取所有文件的路径以及 Spark Scala rdd/dataframe 中的数据
【发布时间】:2018-04-20 12:20:37
【问题描述】:

我有一个包含 100 多个子目录的目录。每个子目录都有一个文本文件。我想编写一个 spark/scala 代码来将子目录名称附加到其中文件中的每个记录。

例如。

包含/parent_dir/subdir1/file1->

abc|123

def|456

包含 /parent_dir/subdir2/file1 ->

ghi|789

包含 /parent_dir/subdir3/file1 ->

jkl|901

想要的输出文件->

abc|123|subdir1

def|456|subdir1

ghi|789|subdir2

jkl|901|subdir3

【问题讨论】:

    标签: scala loops apache-spark


    【解决方案1】:

    您可以读取为text 文件并获取文件的path,如下所示。

    import org.apache.spark.sql.functions.input_file_name
    val spark = SparkSession
      .builder()
      .appName("Test App")
      .master("local[1]")
      .getOrCreate()
    import spark.implicits._
    
    val data = spark.read.text("/parent_dir/*")
      .select(input_file_name().as("path"), $"value")
    

    现在您将数据作为数据框获取,其中包含 path of file 和 data as

    +--------------------------------+-------+
    |path                            |value  |
    +--------------------------------+-------+
    |file:///parent_dir/subdir1/file1|abc|123|
    |file:///parent_dir/subdir1/file1|def|456|
    |file:///parent_dir/subdir3/file1|jkl|901|
    |file:///parent_dir/subdir2/file1|ghi|789|
    +--------------------------------+-------+
    

    现在您可以解析路径并仅获取所需的目录。

    希望这会有所帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-12
      • 2022-11-02
      • 2017-05-28
      • 1970-01-01
      • 1970-01-01
      • 2017-08-16
      • 2017-05-04
      • 2017-10-07
      相关资源
      最近更新 更多