读取多个文件,但弄清楚我当前在哪个文件上

时间:2018-12-21 23:08:20

标签: python pyspark

我要使用以下语法:

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

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

1 个答案:

答案 0 :(得分:0)

我能够找到解决方案,希望它能对某人有所帮助。
我正在读取包含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