- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我是 Apache Hive 的新手。在处理外部表分区时,如果我直接向 HDFS 添加新分区,则在运行 MSCK REPAIR 表后不会添加新分区。以下是我试过的代码,
-- 创建外部表
hive> create external table factory(name string, empid int, age int) partitioned by(region string)
> row format delimited fields terminated by ',';
--详细的表格信息
Location: hdfs://localhost.localdomain:8020/user/hive/warehouse/factory
Table Type: EXTERNAL_TABLE
Table Parameters:
EXTERNAL TRUE
transient_lastDdlTime 1438579844
-- 在HDFS中创建目录,为表工厂加载数据
[cloudera@localhost ~]$ hadoop fs -mkdir 'hdfs://localhost.localdomain:8020/user/hive/testing/testing1/factory1'
[cloudera@localhost ~]$ hadoop fs -mkdir 'hdfs://localhost.localdomain:8020/user/hive/testing/testing1/factory2'
-- 表格数据
cat factory1.txt
emp1,500,40
emp2,501,45
emp3,502,50
cat factory2.txt
EMP10,200,25
EMP11,201,27
EMP12,202,30
-- 从本地拷贝到HDFS
[cloudera@localhost ~]$ hadoop fs -copyFromLocal '/home/cloudera/factory1.txt' 'hdfs://localhost.localdomain:8020/user/hive/testing/testing1/factory1'
[cloudera@localhost ~]$ hadoop fs -copyFromLocal '/home/cloudera/factory2.txt' 'hdfs://localhost.localdomain:8020/user/hive/testing/testing1/factory2'
-- 改变表以在 Metastore 中更新
hive> alter table factory add partition(region='southregion') location '/user/hive/testing/testing1/factory2';
hive> alter table factory add partition(region='northregion') location '/user/hive/testing/testing1/factory1';
hive> select * from factory;
OK
emp1 500 40 northregion
emp2 501 45 northregion
emp3 502 50 northregion
EMP10 200 25 southregion
EMP11 201 27 southregion
EMP12 202 30 southregion
现在我创建了新文件 factory3.txt 以添加为表工厂的新分区
cat factory3.txt
user1,100,25
user2,101,27
user3,102,30
-- 创建路径并复制表数据
[cloudera@localhost ~]$ hadoop fs -mkdir 'hdfs://localhost.localdomain:8020/user/hive/testing/testing1/factory2'
[cloudera@localhost ~]$ hadoop fs -copyFromLocal '/home/cloudera/factory3.txt' 'hdfs://localhost.localdomain:8020/user/hive/testing/testing1/factory3'
现在我执行了下面的查询来为添加的新分区更新元存储
MSCK REPAIR TABLE factory;
现在表格没有给出 factory3 文件的新分区内容。在为表工厂添加分区时,我能知道我在哪里做错了吗?
然而,如果我运行 alter 命令,它就会显示新的分区数据。
hive> alter table factory add partition(region='eastregion') location '/user/hive/testing/testing1/factory3';
我能知道为什么 MSCK REPAIR TABLE 命令不起作用吗?
最佳答案
对于 MSCK
工作,命名约定/partition_name=partition_value/
应该使用。比如在table的根目录下;
# hadoop fs -ls /user/hive/root_of_table/*
/user/hive/root_of_table/day=20200101/data1.parq
/user/hive/root_of_table/day=20200101/data2.parq
/user/hive/root_of_table/day=20200102/data3.parq
/user/hive/root_of_table/day=20200102/data4.parq
当你运行 msck repair table <tablename>
day
的分区; 20200101
和 20200102
将自动添加。
关于hadoop - Apache hive MSCK REPAIR TABLE 未添加新分区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31781979/
我的 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
我是一名优秀的程序员,十分优秀!