Python 当路径列在数据框中时,如何使用pyspark读取拼花地板文件

Python 当路径列在数据框中时,如何使用pyspark读取拼花地板文件,python,apache-spark,pyspark,Python,Apache Spark,Pyspark,我有一个数据帧,其中包含1M s3路径列表,如下所示: 输入路径 |path | -------------------------- S3://abcbucket/fhg.parquet s3://abcbucket/gbj.parquet 考虑到大数据量,我想以一种高效的方式读取所有这些拼花地板文件 我就是这样做的: input_df_s3_path = spark.read.csv("s3a://bucketname/s3_path.csv

我有一个数据帧,其中包含1M s3路径列表,如下所示:

输入路径

|path                    |
--------------------------
S3://abcbucket/fhg.parquet
s3://abcbucket/gbj.parquet
考虑到大数据量,我想以一种高效的方式读取所有这些拼花地板文件

我就是这样做的:

input_df_s3_path = spark.read.csv("s3a://bucketname/s3_path.csv")
    s3_paths = input_df_s3_path.select('path').rdd.map(lambda row : row[0]).collect()
    input_df = sqlContext.read.parquet(*s3_paths)

有没有其他方法可以让我以更高效、更快的方式读取文件?

一种相当有效的方法是首先将所有路径存储在.csv文件中

然后访问该文件

而不是打电话:`

sqlContext.read.parquet(*s3_paths)
您可以存储路径,然后访问它们

它将减少反复调用sqlContext.read.parguet()方法的开销

您可以使用:

 df = spark.read.parquet("/path/to/infile.parquet")
 df.write.csv("/path/to/outfile.csv")
有关提高流程效率的更多信息,请参阅以下链接:


  • 这就是我正在使用的。我有一个存储所有s3路径的csv文件,从该csv文件创建一个数据帧,转换列表中的所有s3路径,并将该列表传递给read.parquet()。更新了代码段。这是你的建议吗?