首先,我们的独立 Spark 集群由 20 个节点组成,每个节点有 40 个核心和 128G 内存(包括 2 个主节点)。
1.我们使用Spark-Job-Server来重用Spark-Context(在核心中,我们要重用缓存的RDD进行查询),当我们将Spark执行器内存设置为每个节点33G并在DataFrame上执行SQL如“ select * from tablename limit 10",则结果将是格式错误的 UTF-8 样式,应用程序无法解析。
但是如果我们将executor-memory设置在32G以下,那么结果就很好了。在更改内存时,我们保持其余设置不变。
谁能很好地了解 Spark 和 Spark-Job-Server 告诉我们代码混乱的原因?是因为太多的内存导致了我们将结果乱码编码的原因吗?
2. 第二件事是在我们的用户案例中更具体的事情。我们将 60G 数据加载到 mem 中并使用纯内存存储级别将其持久化,数据实际上是一个结构化的表,我们将对其进行一些查询。然后我们在我们缓存的60G RDD(注册为DataFrame)上尝试了Spark SQL,具体来说,并行执行“从tableName where条件子句中选择列”之类的几个查询,导致OOM异常。
我们真的想增加当前集群的查询并行度。谁能给我们一些提示或一些信息来帮助我们解决并行性要求。