Spark SQL.distinct()性能
我想通过JDBC从数据库中获取数百GB的数据源,然后使用Spark SQL进行处理。目前我正在做一些分区,数据和进程是通过成批的milion记录进行的。问题是,我还想对我的数据帧应用一些重复数据消除,我打算放弃分批处理的想法,尝试使用一个相应分区的数据帧来处理数百GB的数据 主要问题是:在这种情况下.distinct()将如何工作?Spark SQL是否会首先尝试将所有数据加载到RAM中,然后应用重复数据消除,包括多次洗牌和重新分区?我是否必须确保集群有足够的RAM来容纳原始数据,或者它能够帮助自己进行HDD存储(从而降低性能) 或者我应该在没有Spark的情况下执行此操作-将数据移动到目标存储,然后应用不同的计数并检测重复项并将其清除?Spark SQL不用于Spark SQL.distinct()性能,sql,apache-spark,duplicates,distinct,Sql,Apache Spark,Duplicates,Distinct,我想通过JDBC从数据库中获取数百GB的数据源,然后使用Spark SQL进行处理。目前我正在做一些分区,数据和进程是通过成批的milion记录进行的。问题是,我还想对我的数据帧应用一些重复数据消除,我打算放弃分批处理的想法,尝试使用一个相应分区的数据帧来处理数百GB的数据 主要问题是:在这种情况下.distinct()将如何工作?Spark SQL是否会首先尝试将所有数据加载到RAM中,然后应用重复数据消除,包括多次洗牌和重新分区?我是否必须确保集群有足够的RAM来容纳原始数据,或者它能够帮助
不同的查询;这意味着过滤重复记录的处理发生在执行者,而不是数据库。因此,您关于在执行者处发生洗牌以处理distinct
的假设是正确的
尽管如此,我仍然建议您继续在Spark上执行重复数据消除,而不是为其建立单独的安排。我个人使用distinct
的经验非常令人满意。一直以来都是连接推动了我的按钮。Spark SQL不用于不同的
查询;这意味着过滤重复记录的处理发生在执行者,而不是数据库。因此,您关于在执行者处发生洗牌以处理distinct
的假设是正确的
尽管如此,我仍然建议您继续在Spark上执行重复数据消除,而不是为其建立单独的安排。我个人使用distinct
的经验非常令人满意。一直以来,推动我前进的都是联合