create table ...asバックアップテーブルとcreate table xxx like xxxレプリケーションテーブル構造


create table...asバックアップテーブルの使用
ソーステーブル構築文
CREATE TABLE dc_ods.miu_company_member_acct_itme_info_ods (
  acctitemid STRING,
  memberid STRING,
  acct_type_code STRING,
  total_amount DECIMAL(10,0),
  freeze_amount DECIMAL(10,0),
  overdue_amount DECIMAL(10,0),
  expired_amount DECIMAL(10,0),
  valid_amount DECIMAL(10,0),
  data_version DECIMAL(10,0),
  acct_item_state STRING,
  oper_id STRING,
  create_time STRING,
  update_time STRING,
  brand_code STRING,
  brand_name STRING,
  used_amount DECIMAL(10,0) COMMENT '     ',
  ods_update_time STRING COMMENT 'ODS     '
)
PARTITIONED BY (
  partition_date INT
)
WITH SERDEPROPERTIES ('serialization.format'='1')
STORED AS PARQUET

ソーステーブル文CTASのバックアップ
create table miu_company_member_acct_itme_info_ods_0619 as select * from  miu_company_member_acct_itme_info_ods;

バックアップテーブル構築文
CREATE TABLE dc_ods.miu_company_member_acct_itme_info_ods_0619 (
  acctitemid STRING,
  memberid STRING,
  acct_type_code STRING,
  total_amount DECIMAL(10,0),
  freeze_amount DECIMAL(10,0),
  overdue_amount DECIMAL(10,0),
  expired_amount DECIMAL(10,0),
  valid_amount DECIMAL(10,0),
  data_version DECIMAL(10,0),
  acct_item_state STRING,
  oper_id STRING,
  create_time STRING,
  update_time STRING,
  brand_code STRING,
  brand_name STRING,
  used_amount DECIMAL(10,0),
  ods_update_time STRING,
  partition_date INT
)
STORED AS TEXTFILE

hiveでCTASを使用してテーブルを作成する場合は、次の点に注意してください.
1.hiveでCTASでテーブルを作成します.作成したテーブルは、ソーステーブルがパーティションテーブルであるかどうかにかかわらず、非パーティションテーブルに統一されます.したがって、パーティションテーブルの作成にはcreate table...asを使用します.パーティション機能の喪失に注意してください.もちろん、テーブルを作成してからパーティションを追加して、パーティションテーブルにすることができます.ソース・テーブルが非パーティション・テーブルの場合、この問題はありません.
2.create table as select*を使用してテーブルを作成するときにソーステーブルがパーティションテーブルである場合、新しいテーブルには複数のフィールドが作成されます.具体的には、複数のフィールドの数と名前がソーステーブルパーティションの数と名前です.もちろんselectが指定したカラムを選択している場合は問題ありません.
3.ソーステーブルの格納フォーマットがTEXTFILEでない場合.CTASを使用して作成されたテーブルストレージフォーマットは、デフォルトのフォーマットtextfileになります.例えばここのソーステーブルはRCFILEです.新しいテーブルはTEXTFILEです.もちろんcreate table...asを使用してテーブルを作成するときに、格納フォーマットや解析フォーマット、さらにはカラム名などのプロパティを指定できます.
4.CTAS方式で作成したテーブルは外部テーブルではありません.
5.CTASを使用して作成されたテーブルはバケツテーブルに分割できません.
create table xxx like xxxを使用してテーブル構造をコピーする
テーブル構造文のコピーcreate table xxx like xxx
create table miu_company_member_acct_itme_info_ods_0620 like miu_company_member_acct_itme_info_ods;

テーブルの構築文のコピー
CREATE TABLE dc_ods.miu_company_member_acct_itme_info_ods_0620 (
  acctitemid STRING,
  memberid STRING,
  acct_type_code STRING,
  total_amount DECIMAL(10,0),
  freeze_amount DECIMAL(10,0),
  overdue_amount DECIMAL(10,0),
  expired_amount DECIMAL(10,0),
  valid_amount DECIMAL(10,0),
  data_version DECIMAL(10,0),
  acct_item_state STRING,
  oper_id STRING,
  create_time STRING,
  update_time STRING,
  brand_code STRING,
  brand_name STRING,
  used_amount DECIMAL(10,0) COMMENT '     ',
  ods_update_time STRING COMMENT 'ODS     '
)
PARTITIONED BY (
  partition_date INT
)
WITH SERDEPROPERTIES ('serialization.format'='1')
STORED AS PARQUET

create table xxx like xxxの建表文とソース表の建表文は表名が一致しない以外は一致しない.
Hiveバックアップテーブルは、まずcreate table xxx like xxxを使用してテーブル構造をコピーし、insert overwriteを使用してバックアップテーブルにデータを挿入することが望ましい.
#          ,        

insert overwrite table dc_ods.miu_company_member_acct_itme_info_ods_0620 partition (partition_date) select * from dc_ods.miu_company_member_acct_itme_info_ods;

参考ブログ:https://blog.csdn.net/qq_26442553/article/details/79593504
Shylin