【问题标题】:Dynamic spool space allocation in teradatateradata 中的动态假脱机空间分配
【发布时间】:2018-07-16 03:52:54
【问题描述】:

我有大量数据并将其从 teradata 导入到 hdfs。这样做时,通常假脱机空间不足,因此作业会失败。有什么解决办法吗?可以根据数据大小动态分配假脱机空间吗?或者我们可以将 sqoop import 中的数据加载到临时缓冲区中,然后写入 hdfs 吗?

【问题讨论】:

  • 增加 sqoop 中的映射器以获得良好的#splits,这可能会通过增加映射器和在 split-by 中使用索引字段来帮助您可以增加很多优势。这是我关于如何利用拆分和映射器组合的答案:stackoverflow.com/questions/48556141/…

标签: hdfs teradata sqoop


【解决方案1】:

如果 SPOOL 用完,可能是以下任何一种情况:

  1. 错误编写的查询(即意外的 CROSS JOIN)

    对您的查询进行解释并检查产品连接或任何看起来需要很长时间的东西

  2. 低效的查询计划

    运行 EXPLAIN 并查看是否有任何长期估计。另外,你可以试试DIAGNOSTIC HELPSTATS ON FOR SESSION。当您启用此标志时,无论何时运行 EXPLAIN,您都会在底部获得一堆推荐的统计数据来收集。其中一些建议可能有用

  3. 海量数据

    您在这里无能为力。也许尝试分批导入。

此外,您可以检查运行查询的用户的 MaxSpool 参数是什么。您可以尝试增加 MaxSpool 值以查看是否有帮助。请记住,实际可用的假脱机将受到未分配的 PERM 空间量的限制。

【讨论】:

  • 4) 高数据偏差。对于高度不均匀的分布数据,您可能会用完一个放大器上的线轴,而整个 MaxSpool 应该足够了。
  • 我会尝试上面提到的选项。
  • 是的,Ulick 有一个很好的观点……它可能是#4。检查您的源 TD 表以查看表数据是否均匀分布——您可以使用 TD 的内置 HASH (hashamp/hashbucket/hashrow) 函数来计算这一点。此外,请执行 EXPLAIN 以查看您的查询是否对可能分布不均匀的数据有任何聚合/重新分配步骤
  • 我认为 #4 是我的数据的问题。我会尝试一些解决方法!
猜你喜欢
  • 2021-09-07
  • 1970-01-01
  • 2019-09-12
  • 2020-04-26
  • 1970-01-01
  • 2017-05-07
  • 2018-08-22
  • 2017-02-14
  • 1970-01-01
相关资源
最近更新 更多