【发布时间】:2018-10-15 13:11:26
【问题描述】:
我正在运行一个包含大量数据(大约 5000 万条记录)的 Spark SQL 查询。由于记录繁重,集群中的查询变得更慢,因此处理整个数据需要很长时间(20 分钟) .我在查询中使用内连接,左连接。如何提高性能。
【问题讨论】:
标签: apache-spark-sql
我正在运行一个包含大量数据(大约 5000 万条记录)的 Spark SQL 查询。由于记录繁重,集群中的查询变得更慢,因此处理整个数据需要很长时间(20 分钟) .我在查询中使用内连接,左连接。如何提高性能。
【问题讨论】:
标签: apache-spark-sql
由于您正在执行连接操作并且数据量很大,因此可能会涉及到大量的改组和 I/O 操作。因此,如果您不使用 kryo 序列化,您的代码将使用默认的 Java 序列化。使用 Kryo 序列化,它可以提供更好的性能。
这取决于您在 Hdfs 中存储数据的方式。如果它是文件格式。尝试在其上创建 Hive 表。 Hive 提供了许多优化技术。 一个。 Partitiong and Bucketing :分区加速查询,因为您不必在读取数据时扫描整个表。分桶加速连接操作。
b.可以使用 Map Side join:这里将较小的表发送到内存中,在 mapper 本身执行连接操作,从而加快查询速度。
Apache Spark 提供了使用 Hive 上下文来利用 Hive 的选项。
【讨论】: