Python 当路径列在数据框中时,如何使用pyspark读取拼花地板文件
我有一个数据帧,其中包含1M s3路径列表,如下所示: 输入路径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
|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()。更新了代码段。这是你的建议吗?