Hive,创建表___,如___存储为___

时间:2015-08-25 22:10:06

标签: hadoop hive

我在hive中有一个表存储为文本文件。我想将所有数据移动到具有相同模式的另一个表中,但存储为序列文件。 如何创建第二个表?我想使用配置单create table like命令,但它不支持as sequencefile

hive> create table test_sq like test_t stored as sequencefile;
FAILED: ParseException line 1:33 missing EOF at 'stored' near 'test_t'

我正在寻找一种编程方式,以便我可以为更多的表复制相同的过程。

2 个答案:

答案 0 :(得分:4)

CREATE TABLE test_t LIKE test_sq;

它只复制源表定义。新表不包含任何行。正如你所说,你必须移动所有数据。在这种情况下,上述查询不合适;

试试这个,

CREATE TABLE test_sq row format delimited fields terminated by '|' STORED AS sequencefile AS select * from test_t;
  • 目标不能是分区表。
  • 目标不能是外部表格。
  • 它复制结构和数据

注意 - 如果您不想分隔行格式,请从查询中删除。您也可以在查询中给where子句复制选定的行;

答案 1 :(得分:0)

尝试一起使用create + insert。

使用普通的DDL语句创建表。

CREATE TABLE test2 (a INT) STORED AS SEQUENCEFILE

然后使用

INSERT INTO test2 AS SELECT * FROM test;

test是使用Textfile作为数据格式的表,'test2'是使用SEQUENCEFILE数据格式的表。