Pyspark:读取多个csv文件并用源注释它们

Ken*_*Lim 2 python apache-spark pyspark

我们在将批量文件摄取到 Spark 中时遇到了问题。

目前,我知道可以使用通配符完成多个文件摄取

spark.read.csv("path/to/file*.csv")
Run Code Online (Sandbox Code Playgroud)

或通过传递感兴趣的路径列表

spark.read.csv(["path/to/file1.csv", "path/to/file2.csv"])
Run Code Online (Sandbox Code Playgroud)

在我们的情况下,我们有大量文件(>100k),其中包含 file_name 编码的 ID,但表本身中没有编码 ID。使用上述任一方法的行为就像文件的简单联合,并且似乎不允许在数据集中的任何位置存储文件名。

我将如何组合所有这些 csv,同时维护文件名编码 ID。

Ste*_*ven 5

有一个简单的函数叫做input_file_name.

from pyspark.sql import functions as F

df = spark.read.csv("path/to/file*.csv").withColumn("filename", F.input_file_name())
Run Code Online (Sandbox Code Playgroud)