gpt4 book ai didi

hadoop - hive外部分区表

转载 作者:可可西里 更新时间:2023-11-01 14:16:40 26 4
gpt4 key购买 nike

首先我创建了按代码和日期分区的配置单元外部表

CREATE EXTERNAL TABLE IF NOT EXISTS XYZ
(
ID STRING,
SAL BIGINT,
NAME STRING,

)
PARTITIONED BY (CODE INT,DATE STRING)
ROW FORMAT SERDE 'parquet.hive.serde.ParquetHiveSerDe'
STORED AS
INPUTFORMAT "parquet.hive.DeprecatedParquetInputFormat"
OUTPUTFORMAT "parquet.hive.DeprecatedParquetOutputFormat"
LOCATION '/old_work/XYZ';

然后我在这个表上执行插入覆盖,从其他表中获取数据

INSERT OVERWRITE TABLE XYZ PARTITION (CODE,DATE)
SELECT
*
FROM TEMP_XYZ;

然后我计算 hive 中的记录数 从 XYZ 中选择计数 (*);它告诉我有 1000 条记录然后我将位置“/old_work/XYZ”重命名或移动到“/new_work/XYZ”

然后我再次删除 XYZ 表并再次创建指向新目录的位置表示“/new_work/XYZ”

CREATE EXTERNAL TABLE IF NOT EXISTS XYZ
(
ID STRING,
SAL BIGINT,
NAME STRING,

)
PARTITIONED BY (CODE INT,DATE STRING)
ROW FORMAT SERDE 'parquet.hive.serde.ParquetHiveSerDe'
STORED AS
INPUTFORMAT "parquet.hive.DeprecatedParquetInputFormat"
OUTPUTFORMAT "parquet.hive.DeprecatedParquetOutputFormat"
LOCATION '/new_work/XYZ';

但是当我从配置单元的 XYZ 表中执行 select count(*) 时,它显示 0 条记录,我想我错过了什么,请帮我解决这个问题????

最佳答案

您不需要删除表并在第二次重新创建它:

只要移动或重命名表的外部 hdfs 位置,就可以这样做:

    msck repair table <table_name>

在您的情况下,错误是因为没有使用新路径更新配置单元元存储。

关于hadoop - hive外部分区表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26712337/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com