python—如何在Dataframe中列出路径时使用pyspark读取Parquet文件

qacovj5a  于 2021-05-27  发布在  Spark
关注(0)|答案(1)|浏览(358)

我有一个包含1m s3路径列表的Dataframe,如下所示:
输入\u df \u s3 \u路径

|path                    |
--------------------------
S3://abcbucket/fhg.parquet
s3://abcbucket/gbj.parquet

考虑到大数据量,我想以一种有效的方式读取所有这些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)

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

mrzz3bfm

mrzz3bfm1#

一种相当有效的方法是首先将所有路径存储在.csv文件中。
然后访问该文件。
而不是打电话:`

sqlContext.read.parquet(*s3_paths)

您可以存储路径,然后访问它们。
它将减少反复调用sqlcontext.read.parguet()方法的开销。
您可以使用:

df = spark.read.parquet("/path/to/infile.parquet")
 df.write.csv("/path/to/outfile.csv")

有关提高流程效率的更多信息,请参阅以下链接:
https://docs.microsoft.com/en-us/answers/questions/64449/how-to-move-compressed-parquet-file-using-adf-or-d.html
https://www.quora.com/how-can-i-use-spark-to-read-a-whole-directory-instead-of-a-single-file

相关问题