【问题标题】:Drop Hive external table WITHOUT removing data删除 Hive 外部表而不删除数据
【发布时间】:2017-04-07 05:21:18
【问题描述】:

目标是破坏 Hive 架构,但将数据保留在下面。

给定一个 Hive 外部表,例如使用脚本 1 创建的,可以使用脚本 2 删除它。这将删除数据(删除文件夹 /user/me/data/)。此文件夹必须保留以供其他项目使用。

到目前为止,长时间的搜索没有产生任何结果......

脚本 1:创建外部表

CREATE EXTERNAL TABLE external_hive_table(
    column1 STRING
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY
    '\t'
STORED AS TEXTFILE
LOCATION
   '/user/me/data/'
TBLPROPERTIES (
    "skip.header.line.count"="1");

脚本 2:删除外部表(删除数据)

ALTER TABLE
    external_hive_table
SET TBLPROPERTIES (
    'EXTERNAL'='FALSE');

DROP TABLE external_hive_table;

编辑:脚本 3:删除外部表(保留数据)

 DROP TABLE external_hive_table;

【问题讨论】:

  • 我来到这个线程是因为我想知道“如何删除外部表和数据”。答案就在您的问题中。

标签: hadoop hive hortonworks-data-platform


【解决方案1】:

仅使用此语句(不使用 alter table):

DROP TABLE external_hive_table;

【讨论】:

    【解决方案2】:

    1.防止外部表中的数据被DROP TABLE语句删除。

    ALTER TABLE table_name SET TBLPROPERTIES ('external.table.purge'='false');
    

    2.然后删除表。

    DROP TABLE table_name;
    

    参考: https://docs.cloudera.com/HDPDocuments/HDP3/HDP-3.1.4/using-hiveql/content/hive_drop_external_table_data.html

    【讨论】:

      【解决方案3】:

      我们可以避免这种陡峭的 Boz,因为如果我们删除外部表,它将删除 HDFS 架构中可用的数据将被删除。 脚本2:删除外部表(删除数据)

      更改表 external_hive_table 设置 TBL 属性 ( 'EXTERNAL'='FALSE');

      删除表 external_hive_table

      【讨论】:

        猜你喜欢
        • 2018-05-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-08-30
        • 1970-01-01
        • 1970-01-01
        • 2016-11-14
        • 2018-03-01
        相关资源
        最近更新 更多