当前位置: 首页 > 知识库问答 >
问题:

simple sparksql联接查询上丢失的执行器

江棋
2023-03-14

我正在运行一个简单的sparkSQL查询,它在2个数据集上进行匹配每个数据集大约500GB。所以整个数据大约是1TB。

val adreqPerDeviceid = sqlContext.sql("select count(Distinct a.DeviceId) as MatchCount from adreqdata1 a inner join adreqdata2  b ON a.DeviceId=b.DeviceId ")
adreqPerDeviceid.cache()
adreqPerDeviceid.show()

作业工作良好,直到数据加载(分配了10K任务)。在.cache行分配了200个任务。失败的地方!我知道我不是在缓存一个巨大的数据,它只是一个数字,为什么它会在这里失败。

以下是错误详细信息:

共有1个答案

谭健柏
2023-03-14

每当您对一个巨大的数据集进行连接时,即从2个数据集的连接中寻找聚合值,您的集群需要一个最小的硬盘(DataSet1+DataSet2)大小,而不是RAM。则作业将成功。

 类似资料:
  • 我有两个表,一个用于聚会,一个用于记分卡模板映射。记分卡模板映射表有一个返回到party(on id)的外键。我想找到一个有记分卡模板映射细节的所有各方的列表。

  • 我怎样才能让我的查询在查询时不丢失连接?

  • 问题内容: 我有两个通过1:1关系连接的实体,例如: 我想创建一个Doctrine查询,在其中我可以根据中某个列的值检索数据。像这样的东西(当然不起作用): 任何帮助将非常感激 :) 问题答案: 左连接在这里也没有意义(因为where子句将使它像内部连接一样工作)

  • 2015-04-24 12:24:37,114错误[main]:QL.Driver(SessionState.java:PrinterRor(833))-失败:执行错误,org.apache.hadoop.hive.ql.exec.mr.MapredTask返回代码1

  • 问题内容: 对于开发人员何时使用联接而不是子查询是否有经验法则还是相同的? 问题答案: 取决于RDBMS。您应该比较两个查询的执行计划。 根据我对Oracle 10和11的经验,执行计划始终是相同的。

  • 我正在使用spark-submit(集群模式)在spark sql中执行一个简单的create table查询。正在接收org.apache.parquet.io.ParquetDecodingException。我可以从internet上获得关于这个问题的一些细节,其中一个建议是添加配置spark.sql.parquet.writelecacyformat=true。添加此设置后,该问题仍然存在