我正在运行带有大量数据的Spark SQL查询(大约5000万条记录)。由于记录较多,查询在群集中变慢,因此需要很长时间(20分钟)来处理整个数据。我在查询中使用内连接,左连接。如何提高性能。
答案 0 :(得分:0)
由于您正在执行联接操作,并且数据量巨大,因此很可能会造成很多改组和I / O操作。因此,如果您未使用kryo序列化,则您的代码将使用默认的Java序列化。使用Kryo序列化,可以提供更好的性能。
这取决于您如何在Hdfs中存储数据。如果是文件格式。尝试在其顶部创建Hive表。 Hive提供了许多优化技术。 一种。分区和存储分区:分区可以加快查询速度,因为您在读取数据时不必扫描整个表。使用存储桶可以加快加入操作的速度。
b。可以使用Map Side联接:这里将较小的表发送到内存,在其中由mapper本身执行联接操作,从而加快了查询速度。
Apache Spark提供了使用Hive Context来利用Hive的选项。