删除计算中不使用的列是否会影响Spark中的性能?

qxgroojn  于 2022-09-21  发布在  Spark
关注(0)|答案(1)|浏览(157)

我有一个大型数据集(数亿行),需要使用Spark with Databricks进行大量处理。此数据集有数十列,通常为整型、浮点型或整型数组。

我的问题是:如果我在处理数据之前删除一些不需要的列,会有什么不同吗?在内存和/或处理速度方面?

uurv41yg

uurv41yg1#

这取决于您将如何处理此数据集。Spark足够聪明,能够计算出真正需要哪一列,但这并不总是那么容易。例如,当您使用UDF(User Defined Function,用户定义函数),它在定义了所有列的情况下对Case类进行操作时,将从源中选择所有列,因为从Spark的Angular 来看,这样的UDF是一个黑盒。

您可以通过SparkUI检查为您的作业选择了哪些列。例如,请查看这篇博客文章:https://medium.com/swlh/spark-ui-to-debug-queries-3ba43279efee

在您的计划中,您可以查找以下行:PartitionFilters:[],PushedFilters:[],ReadSchema:struct

在ReadSchema中,您将能够确定Spark读取了哪些列,以及在我们的处理中是否确实需要它们

相关问题