创建HIVE分区表HDFS位置辅助



当然希望有人可以帮助我通过自动添加基于驻留在HDFS目录中的逗号分隔的文件的数据来创建外部HIVE分区表。我的理解是,当您定义一个CREATE EXTERNAL TABLE, PARTITIONED并为其提供LOCATION时,它应该递归地扫描/读取每个子目录,并将数据加载到新创建的分区外部表中。以下内容应该能对我的问题提供一些额外的见解……

Sample HDFS directory structure:<br>
/data/output/dt=2014-01-01<br>
/data/output/dt=2014-01-02<br>
/data/output/dt=2014-01-03   ...<br>
/data/output/dt=2014-05-21<br>

每个'dt='子目录包含分隔文件。

下面是我的CREATE EXTERNAL TABLE语法的一个例子:

    CREATE EXTERNAL TABLE master_test (UID string,
    lname string,
    fname string,
    addr string,
    city string,
    state string,
    orderdate string,
    shipdate string)
    PARTITIONED BY (dt STRING)
    ROW FORMAT DELIMITED
    FIELDS TERMINATED BY ','
    STORED AS TEXTFILE
    LOCATION '/data/output/';

在创建master_test外部表时,我认为所有带分隔符的文件都已经包含在CREATE表中了。我将数据放入新定义的外部表的唯一方法是通过ALTER table ADD PARTITION语句,例如:ALTER table master_test ADD PARTITION (dt='2014-04-16')。或者,如果显式定义带分隔符的文件的位置,它会将单个文件添加到定义的表中。

您可以使用MSCK REPAIR自动发现分区。看一下文档:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL#LanguageManualDDL-RecoverPartitions(MSCKREPAIRTABLE)

最新更新