partitionBy && s3
1 | df.write.partitionBy('date', 'index1', 'index2', 'index3').parquet('some/path/') |
我用spark程序在输出parquet的过程中,通过partitionBy的column来自动生成文件夹。由于spark在写入的过程中,会扫描some/path/
的所有目录。然后由于我的目录中有以date
这个时间维度的标准的,这造成随着时间的推移,文件夹会越来越多,扫描的数据也就越来越慢。然后由于我使用的存储是s3,而s3不是一个真正意义上的文件系统,因而扫描文件夹的过程是一个调用api的过程,就更加慢了~
解决方式:可以写入hdfs等文件系统,再通过s3-dist-cp这个工具同步到s3上。
so文件
spark 可以通过sparkContext.addFiles这个api,把so文件添加到任务实例上。
结局
未完待续