我有一个包含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)
有没有其他方法可以让我更有效、更快地读取文件?
1条答案
按热度按时间mrzz3bfm1#
一种相当有效的方法是首先将所有路径存储在.csv文件中。
然后访问该文件。
而不是打电话:`
您可以存储路径,然后访问它们。
它将减少反复调用sqlcontext.read.parguet()方法的开销。
您可以使用:
有关提高流程效率的更多信息,请参阅以下链接:
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