我在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'
我正在寻找一种编程方式,以便我可以为更多的表复制相同的过程。
答案 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数据格式的表。