web-dev-qa-db-ja.com

「as select」または「like」を使用してHiveテーブルを作成し、区切り文字も指定します

することは可能ですか

create table <mytable> as select <query statement>

を使用して

row format delimited fields terminated by '|';

またはすること

create table <mytable> like <other_table> row format delimited fields terminated by '|';

言語マニュアルはそうではないように見える..しかし、私が過去にこれを達成したことを私がくすぐった。

37
javadba

Hiveではselect(CTAS)としてテーブルを作成できます

以下のコマンドを試すことができます:

CREATE TABLE new_test 
row format delimited 
fields terminated by '|' 
STORED AS RCFile 
AS select * from source where col=1
  1. ターゲットをパーティションテーブルにすることはできません。
  2. ターゲットを外部テーブルにすることはできません。
  3. 構造とデータをコピーします

Hiveでも同様のテーブルを作成できます。

  1. ソーステーブル定義をコピーするだけです。
81
Venkatesh

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. personのようなemployeeテーブルを作成するには

    CREATE TABLE person LIKE employee;

  2. personのようなemployee外部テーブルを作成するには

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

  3. 次に、DESC person;を使用して、新しく作成されたテーブルスキーマを確認します。

2
Sakthivel