如何让 HIVE 中的 CREATE TABLE...AS SELECT 不填充数据?

How to let CREATE TABLE...AS SELECT in HIVE do not populate data?

当我在HIVE中运行CTAS时,数据也会同时填充。但我只想创建 table,而不是填充数据。我应该怎么做?谢谢

使用 create EXTERNAL table 而不是 create table。观察外部关键字。

在 select 语句中使用 where 条件并给出 where 的值,它不会从配置单元中获取任何记录。

示例 table name demo1

id    name      country  
1     abc        India  
2     xyz        Germany  
3     pqr        France

In CREATE TABLE…AS SELECT in HIVE
Create table demo2...As SELECT id, name, country from demo1 where id=0;

所以,在上面 where 条件的 id 被给定为 0 并且从上面的数据中 select 语句将不会获取任何记录,类似地在 where 条件中选择一个值其中 returns 没有记录。因此,不会在新创建的 table 中插入任何数据。

您可以使用 LIKE 关键字来做到这一点。

create table new_table_name LIKE old_table_name

这将创建没有数据的 table 结构。

@Sunil 的回答对我也有帮助,我只是发布了一个对我来说必要的补充。 源 table 是 Avro 格式,但我想要的是 ORC 格式的新格式,因此

CREATE TABLE dataaggregate_orc_empty LIKE dataaggregate_avro_compressed ROW FORMAT SERDE 'org.apache.hadoop.hive.ql.io.orc.OrcSerde' STORED AS INPUTFORMAT 'org.apache.hadoop.hive.ql.io.orc.OrcInputFormat' OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat' TBLPROPERTIES ('orc.compress'='ZLIB');

如果需要,上述步骤可以分为两步:

CREATE TABLE dataaggregate_orc_empty LIKE dataaggregate_avro_compressed;

alter table dataaggregate_orc_empty set fileformat ORC;

如果有人能就此过程中发生的数据格式更改和相关问题(如果有)提供输入,我将很高兴。