Est-il possible de faire un
create table <mytable> as select <query statement>
en utilisant
row format delimited fields terminated by '|';
ou faire un
create table <mytable> like <other_table> row format delimited fields terminated by '|';
Le manuel linguistique semble indiquer que non… mais quelque chose me chatouille, je l'avais déjà fait dans le passé.
Créer une table en tant que select (CTAS) est possible dans Hive.
Vous pouvez essayer la commande ci-dessous:
CREATE TABLE new_test
row format delimited
fields terminated by '|'
STORED AS RCFile
AS select * from source where col=1
Créer une table comme est également possible dans Hive.
Disons que nous avons une table externe appelée employee
Hive> SHOW CREATE TABLE employee;
OK
CREATE EXTERNAL TABLE employee(
id string,
fname string,
lname string,
salary double)
ROW FORMAT SERDE
'org.Apache.hadoop.Hive.serde2.lazy.LazySimpleSerDe'
WITH SERDEPROPERTIES (
'colelction.delim'=':',
'field.delim'=',',
'line.delim'='\n',
'serialization.format'=',')
STORED AS INPUTFORMAT
'org.Apache.hadoop.mapred.TextInputFormat'
OUTPUTFORMAT
'org.Apache.hadoop.Hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION
'maprfs:/user/hadoop/data/employee'
TBLPROPERTIES (
'COLUMN_STATS_ACCURATE'='false',
'numFiles'='0',
'numRows'='-1',
'rawDataSize'='-1',
'totalSize'='0',
'transient_lastDdlTime'='1487884795')
Pour créer une table person
comme employee
CREATE TABLE person LIKE employee;
Pour créer une table externe person
comme employee
CREATE TABLE person LIKE employee LOCATION 'maprfs:/user/hadoop/data/person';
puis utilisez DESC person;
pour voir le schéma de table nouvellement créé.