Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 读取多个文件,但找出我当前所在的文件_Python_Pyspark - Fatal编程技术网

Python 读取多个文件,但找出我当前所在的文件

Python 读取多个文件,但找出我当前所在的文件,python,pyspark,Python,Pyspark,我想使用以下语法: sc.textFile','.joinfiles 但是,我还需要将每一行与相应的文本文件进行匹配,然后将其保存到db。有没有办法将文件名附加到rdd,或者知道我当前正在读取哪个文件?最后,我想要一个带有字符串文件行内容和另一个字符串对应文件名的df 我找到了一个解决方案,希望它能帮助别人。 我正在读取包含jsonl文件的目录。我得到的是一个数据帧,其中第一列是该行的值,第二列是该行来自的文件名: from pyspark.sql.functions import input_

我想使用以下语法:

sc.textFile','.joinfiles


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

我找到了一个解决方案,希望它能帮助别人。 我正在读取包含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

您可能希望提供一个更完整的代码段,以便我们了解一些上下文什么是rdd和df?