首先,我们的独立Spark集群由20个节点组成,每个节点有40个核心和128G内存(包括2个主机)。
1。 我们使用Spark-Job-Server重用Spark-Context(在核心,我们希望重用缓存的RDD进行查询),当我们将Spark执行器内存设置为每个节点33G并在DataFrame上执行SQL时,例如“select *从tablename limit 10“开始,结果将是错误格式的UTF-8样式,无法通过app解析。
但是如果我们将执行程序内存设置为低于32G,则结果很好。当我们改变记忆时,我们保持其余的设置不受影响。
有谁知道Spark& Spark-Job-Server很好地告诉我们乱码的原因? 这是太多的记忆,这就是为什么我们得到结果混乱的原因?
2。 第二件事是我们的用户案例中更具体的一个。 我们将60G数据加载到内存中,并使用仅内存存储级别保存它,数据实际上是一个结构化表,我们将对其进行一些查询。 然后我们在缓存的60G RDD上注册了Spark SQL(注册为DataFrame),具体来说,并行执行多个查询,例如“从tableName where condition子句中选择列”,这会导致OOM异常。
我们真的希望增加与当前群集的查询并行性。 任何人都可以给我们一些提示或一些信息,这将有助于我们解决并行性要求。