- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我知道MSCK REPAIR TABLE
使用外部表的当前分区更新元存储。
要做到这一点,你只需要做 ls
在表的根文件夹上(假设表仅由一列分区),并获取其所有分区,显然是 < 1s 的操作。
但在实际操作中,可以取一个很长执行时间(甚至 timeout if ran on AWS Athena )。
所以我的问题是,MSCK REPAIR TABLE
是什么?其实在幕后做的又是为什么呢?
MSCK REPAIR TABLE 如何找到分区?
其他相关数据:
我们的数据都在 S3 上,在 EMR (Hive) 或 Athena (Presto) 上运行时都很慢,表中有大约 450 个分区,每个分区平均有 90 个文件,一个分区总共 3 GB,文件在Apache Parquet 格式
最佳答案
你是对的,它读取目录结构,从中创建分区,然后更新配置单元元存储。事实上,最近,该命令也得到了改进,以从 Metastore 中删除不存在的分区。您提供的示例非常简单,因为它只有一级分区键。考虑具有多个分区键的表(2-3 个分区键在实践中很常见)。 msck repair
必须对表目录下的所有子目录进行全树遍历,解析文件名,确保文件名有效,检查该分区是否已经存在于 Metastore 中,然后添加唯一的分区Metastore 中不存在。请注意,文件系统上的每个列表都是到 namenode(在 HDFS 的情况下)的 RPC 或在 S3 或 ADLS 的情况下的 Web 服务调用,这可能会增加大量时间。此外,为了确定分区是否已经存在于 Metastore 中,它需要完整列出 Metastore 知道的所有分区。这两个步骤都可能会增加在大型表上执行命令所花费的时间。 msck 修复表的性能最近在 Hive 2.3.0 中得到了显着改善(有关更多详细信息,请参阅 HIVE-15879)。您可能想要调整 hive.metastore.fshandler.threads
和 hive.metastore.batch.retrieve.max
以提高指挥能力。
关于amazon-web-services - MSCK REPAIR TABLE 在幕后做了什么,为什么它这么慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53667639/
我的 hive 表名采用以下格式: schema_name.hive_table_name 例如:schema1.abc; 现在,当我尝试在上面的配置单元表上执行 MSCK 修复表时,它会抛出以下错误
我每天都会将数据摄入到 HDFS 中。从数据到 HDFS,我生成按日期分区的 Hive 外部表。我的问题如下,我是否应该在每次数据摄取后运行 MSCK REPAIR TABLE tablename ,
我有一个将数据存储在 s3 中默认目录结构的消防水管: "YY/MM/DD/HH"和 athena 中的表,这些列定义为分区: 年:字符串,月:字符串,日:字符串,小时:字符串 跑完后 msck re
我在包含超过 28K 分区的配置单元表上运行 MSCK REPAIR TABLE 表名,我们将每 10 分钟接收一个分区。 当我们每 10 分钟在此表上运行一次 MSCK REPAIR TABLE 时
我有一个外部表,其中包含按日期分区的数据。对于当天的新文件集,数据每天都会更新。这就是我在气流中执行工作的方式。 获取文件。这会在 S3 上获取类似 dt=2018-06-20 的文件。 通过 dt
我有一个外部分区的配置单元表,其位置设置为“gs://xxxx”。我手动添加了一些分区,并且为了将这些分区注册到配置单元元存储,我运行了 MSCK REPAIR 命令,该命令抛出以下错误: FAILE
我正在尝试使用 Hive(0.13) msck repair table命令来恢复分区,它只列出未添加到 Metastore 的分区,而不是将它们也添加到 Metastore。 这是命令的输出 par
我有一个名为employee 的外部分区表,带有partition(year,month,day),每天都会有一个新文件出现在特定的日期位置调用今天的日期,它将在2016 年10 月13 日。 TAB
我将外部配置单元表存储为 Parquet,按列分区,例如 as_of_dt并通过 Spark 流插入数据。 现在每天都会添加新分区。我在做msck repair table以便 hive Metast
运行 MSCK repair tablename 命令时,athena查询编辑器返回错误 tables not in metastore . 但是表存在,我可以在该表上查询。 我有数据保存在 S3形式
我对 HIVE 环境非常陌生。 我正在尝试在带有分区的配置单元中创建一个外部表。 例如,只有两个分区: 我创建了一个外部表: CREATE EXTERNAL TABLE test (col1 INT,
我是 Apache Hive 的新手。在处理外部表分区时,如果我直接向 HDFS 添加新分区,则在运行 MSCK REPAIR 表后不会添加新分区。以下是我试过的代码, -- 创建外部表 hive>
我在使用Amazon Athena时遇到问题,我有一个带有4个分区级别的小存储桶(36430对象,9.7 mb)(my-bucket/p1 = ab/p2 = cd/p3 = ef/p4 = gh/f
我知道MSCK REPAIR TABLE使用外部表的当前分区更新元存储。 要做到这一点,你只需要做 ls在表的根文件夹上(假设表仅由一列分区),并获取其所有分区,显然是 < 1s 的操作。 但在实际操
我在 S3 中有 ORC 数据,如下所示: s3://bucket/orc/clientId=client-1/year=2017/month=3/day=16/hour=20/ s3://bucke
在 SQL 中有: REFRESH TABLE table_name 在 pyspark 中相当于: spark.refreshTable(table_name) 那么,Pyspark 相当于: MS
当新分区添加到 Athena 表时,我们可以使用 Glue Crawler 或 MSCK REPAIR TABLE 来更新元信息。他们的成本是多少?哪一个是首选? 最佳答案 MSCK REPAIR T
我是一名优秀的程序员,十分优秀!