我想知道spark中的数据帧缓存是否是线程安全的。在我们的一个用例中,我从一个hive-table创建一个dataframe,然后通过不同的线程在同一个dataframe上运行多个SQL。由于我们的存储和计算是解耦的,而且由于某些原因读取非常慢,我在考虑将数据帧缓存到内存中,并将缓存的数据帧用于所有查询。数据帧缓存是线程安全的吗?这样做还有其他的陷阱吗?我的计算集群中有足够的内存(磁盘和内存)来缓存表,我将在相同的数据帧上执行10+查询。
谢谢,
阿卡什
发布于 2020-03-10 05:49:33
Re:“我想知道spark中的数据帧缓存是否是线程安全的。”
无论何时配置executor核心,您都可以使用多个线程来处理每个executor上的数据。这意味着在普通的SPARK SQL场景中,DAG也是使用多个线程处理的。
缓存不应该对线程安全有任何影响。此外,DataFrames和RDD一样也是不可变的,因此您不会更改现有数据帧中的数据,而是生成一个新的数据帧。
因此,即使在缓存之后,当您创建多个线程以在同一数据帧上运行不同的SQL时,每个线程也会从缓存的阶段开始,并基于您的SQL计算一个新的阶段。
https://stackoverflow.com/questions/60606433
复制相似问题