在 Hive 中使用子句创建外部 TABLE
CREATE EXTERNAL TABLE with clause in Hive
我想知道是否可以根据条件(我的意思是 WHERE)在 Hive 中创建外部 table?
Hive 无法使用 CTAS 创建外部 table。
CTAS 有这些限制:
1.The 目标 table 不能是分区的 table。
2.The 目标 table 不能是外部 table.
3.The 目标 table 不能是列表分桶 table。
或者,
您可以创建一个外部 table 并使用 select 查询插入到 table。
您可以创建外部 table,方法是将 select 语句与 where clause.First 创建外部 table,然后使用插入覆盖外部 [=16] =] 使用 select 和 where 子句。
CREATE EXTERNAL TABLE table_name
STORED AS TEXTFILE
LOCATION '/user/path/table_name';
INSERT OVERWRITE TABLE table_name
SELECT * FROM Source_Table WHERE column="something";
您不能在 Hive 中使用 Create Table As Select (CTAS) 创建外部 table。但是您可以先创建外部 table,然后使用您的过滤条件将来自任何其他 table 的数据插入 table。下面是创建一个存储为 ORC 的分区外部 table 并将记录插入 table.
的示例
CREATE EXTERNAL TABLE `table_name`(
`column_1` bigint,
`column_2` string)
PARTITIONED BY (
`partition_column_1` string,
`partition_column_2` string)
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'
LOCATION
'${dataWarehouseDir}/table_name'
TBLPROPERTIES (
'orc.compress'='ZLIB');
set hive.exec.dynamic.partition.mode=nonstrict;
INSERT OVERWRITE TABLE table_name PARTITION(partition_column_1, partition_column_2)
SELECT column_1, column_2, partition_column_1, partition_column_2 FROM Source_Table WHERE column = "your filter criteria here";
CREATE TABLE myTable AS
SELECT a,b,c FROM selectTable;
我想知道是否可以根据条件(我的意思是 WHERE)在 Hive 中创建外部 table?
Hive 无法使用 CTAS 创建外部 table。
CTAS 有这些限制:
1.The 目标 table 不能是分区的 table。
2.The 目标 table 不能是外部 table.
3.The 目标 table 不能是列表分桶 table。
或者, 您可以创建一个外部 table 并使用 select 查询插入到 table。
您可以创建外部 table,方法是将 select 语句与 where clause.First 创建外部 table,然后使用插入覆盖外部 [=16] =] 使用 select 和 where 子句。
CREATE EXTERNAL TABLE table_name
STORED AS TEXTFILE
LOCATION '/user/path/table_name';
INSERT OVERWRITE TABLE table_name
SELECT * FROM Source_Table WHERE column="something";
您不能在 Hive 中使用 Create Table As Select (CTAS) 创建外部 table。但是您可以先创建外部 table,然后使用您的过滤条件将来自任何其他 table 的数据插入 table。下面是创建一个存储为 ORC 的分区外部 table 并将记录插入 table.
的示例CREATE EXTERNAL TABLE `table_name`(
`column_1` bigint,
`column_2` string)
PARTITIONED BY (
`partition_column_1` string,
`partition_column_2` string)
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'
LOCATION
'${dataWarehouseDir}/table_name'
TBLPROPERTIES (
'orc.compress'='ZLIB');
set hive.exec.dynamic.partition.mode=nonstrict;
INSERT OVERWRITE TABLE table_name PARTITION(partition_column_1, partition_column_2)
SELECT column_1, column_2, partition_column_1, partition_column_2 FROM Source_Table WHERE column = "your filter criteria here";
CREATE TABLE myTable AS
SELECT a,b,c FROM selectTable;