我是pyspark的新手。我正在尝试处理10 GB的压缩数据。该文件夹有多个gzip文件,每个gzip文件的大小约为500mb。数据存储在s3存储桶中。我想了解处理此庞大数据的正确配置设置。我曾在AWS中尝试过各种实例,但问题是几分钟后输入的读取值变得非常少。最初,在2分钟内读取了大约280mb的数据,但即使在30分钟之后,也仅处理了另外20 mb的数据。我试图了解可能是什么问题。关于此的任何想法将非常有帮助。谢谢!
尝试在7个节点的m4xlarge群集(8个内核,16 GB内存,EBS存储:32 GiB)上使用spark默认并行性并将spark shuffle分区设置为8。
使用的执行器总数:4 活动任务总数:16 最大输入大小/记录:16 mb 最小输入大小/记录:168.5 kb
期望在不到半小时的时间内处理整个10 GB数据,但在30分钟内仅处理300 mb数据。可能是什么问题?
答案 0 :(得分:0)
尝试增加分区大小,因为默认情况下分区大小为200,如果您增加分区大小,则可能会出现此问题。 下面是可以用来增加分区大小的代码。
new MyEntity()
{
MyProperty = null
}
sqlContext.setConf("spark.sql.shuffle.partitions", "300")
配置在对连接或聚集的数据进行混排时使用的分区数。