web-dev-qa-db-fra.com

Créez une table Hive en utilisant "comme sélection" ou "comme" et spécifiez également un délimiteur

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é.

37
javadba

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
  1. La cible ne peut pas être une table partitionnée.
  2. La cible ne peut pas être une table externe.
  3. Il copie la structure ainsi que les données

Créer une table comme est également possible dans Hive.

  1. Il ne fait que copier la définition de la table source.
81
Venkatesh

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')
  1. Pour créer une table person comme employee

    CREATE TABLE person LIKE employee;

  2. Pour créer une table externe person comme employee

    CREATE TABLE person LIKE employee LOCATION 'maprfs:/user/hadoop/data/person';

  3. puis utilisez DESC person; pour voir le schéma de table nouvellement créé.

2
Sakthivel