【问题标题】:Spark dataframe caching by executing multiple queries in different threads通过在不同线程中执行多个查询来缓存数据帧
【发布时间】:2020-06-21 16:33:36
【问题描述】:

我想知道 spark 中的数据帧缓存是否是线程安全的。在我们的一个用例中,我从一个配置单元表创建一个数据帧,然后由不同的线程在同一个数据帧上运行多个 SQL。由于我们的存储和计算是解耦的,并且由于某种原因读取速度非常慢,因此我正在考虑将数据帧缓存在内存中并将缓存的数据帧用于所有查询。数据帧缓存线程安全吗?这样做还有其他陷阱吗? 我的计算集群中有足够的内存(磁盘和 RAM)来缓存表,我将在同一个数据帧上执行 10 多个查询。

谢谢,

阿卡什

【问题讨论】:

    标签: apache-spark apache-spark-sql


    【解决方案1】:

    回复:“我想知道 spark 中的数据帧缓存是否是线程安全的。”

    每当您配置执行器核心时,您都会使用多个线程来处理每个执行器上的数据。这意味着在正常的 SPARK SQL 场景中,DAG 也是使用多个线程处理的。

    缓存不应对线程安全产生任何影响。此外,DataFrame 与 RDD 一样是不可变的,因此您不会更改现有数据帧中的数据,而是生成一个新数据。

    因此,即使在您创建多个线程以在同一数据帧上运行不同的 SQL 时进行缓存后,每个线程也会从缓存阶段开始并根据您的 SQL 计算一个新线程。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-20
      • 1970-01-01
      • 2016-11-17
      • 2013-01-14
      • 2022-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多