【问题标题】:read multiple files, but figure out which file I am currently on读取多个文件,但找出我当前在哪个文件上
【发布时间】:2018-12-21 23:08:19
【问题描述】:

我想使用这个语法:

sc.textFile(','.join(files))

不过,我还需要将每一行与相应的文本文件进行匹配,并稍后将其保存到 db。有没有办法将文件名附加到 rdd 或以某种方式知道我当前正在阅读哪个文件?最后我想要一个带有字符串(文件行内容)和另一个字符串(相应文件名)的df。

【问题讨论】:

  • 您可能希望提供更完整的代码 sn-p 以便我们了解一些上下文
  • rdddf 是什么?

标签: python pyspark


【解决方案1】:

我想出了一个解决方案,希望它能对某人有所帮助。
我正在阅读带有 jsonl 文件的目录。我得到的是一个数据框,其中第一列是该行的值,第二列是该行来自的文件名:

from pyspark.sql.functions import input_file_name
.......
read_files = spark.sparkContext.textFile(some_dir_with_files)
lines = read_files.map(lambda x: x.encode("ascii", "ignore"))
json_data = lines.map(lambda line: json.loads(str(line)))
df = spark.createDataFrame(json_data, StringType())
df_with_file_names = df.withColumn("file_name", input_file_name())
return df_with_file_names

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-17
    • 2017-01-27
    • 1970-01-01
    • 2019-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多