那些年不懂的spark(2)

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文件添加到任务实例上。

结局

未完待续

Done