首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Alter用于在Hive外部表上添加需要很长时间的分区

Alter用于在Hive外部表上添加需要很长时间的分区
EN

Stack Overflow用户
提问于 2020-10-23 20:46:11
回答 1查看 352关注 0票数 0

我正试图通过带有6个节点的EMR集群(每个节点上有8个核心和56GB内存)来执行火花作业。Spark作业对Hive表上的分区进行增量加载,最后执行刷新表以更新元数据。

刷新命令需要3到6个小时才能完成,这太长了。

蜂巢中数据的性质:

  1. 位于S3上的27 S3数据。
  2. 储存在地板上。
  3. 在2列上分区。(ex:s3a//bucket-name/table/partCol1=1/partCol2=2020-10-12). )

注-它是一个按日期划分的分区,不能更改。

使用的火花配置:

  • Num-执行者= 15
  • 执行器-内存=16
  • 执行器-核心=2
  • 驱动器-内存=49
  • 火花-洗牌-分区=48
  • Hive.exec.dynamic.partition.mode=nonstrict
  • Spark.sql.sources.partitionOverwriteMode=dynamic.

尝试过的事物:

  • 调整火花核心/内存/执行器,但没有运气。
  • 刷新表命令。
  • Alter添加分区命令。
  • 用3-4小时完成MSCK repair table tablename

所有这些都对减少Hive上刷新分区的时间没有任何影响。

一些假设:

  1. 当数据存储在Amazon-S3中时,在调优过程中是否遗漏了任何参数?
  2. 目前,表上的分区数接近10k,这是一个问题吗?

任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2020-12-09 12:44:01

  • 在可能的情况下,将分区设置为1列。当我们有多个级别(多列分区)时,它会死掉。
  • 使用R类型实例。与M型实例相比,它以相同的价格提供了更多的内存
  • 如果有许多小文件,可以使用合并来合并源代码中的文件。
  • 检查映射任务的数量。任务越多,性能越差。
  • 使用EMRFS而不是S3保存元数据信息
  • 在下面使用 {“分类”:“火花”,“属性”:{ "maximizeResourceAllocation":“真”}
  • 遵循下面链接中的一些说明
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64507087

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档