私はパーティションをマウントする必要があるときはいつでもこれを実行する必要があります。手動で行うのではなく、外部のハイブテーブルのパーティションを自動検出する方法があります。ハイブで外部表を使用すると、パーティションをインテリジェントに識別できますか?
ALTER TABLE TableName ADD IF NOT EXISTS PARTITION()location 'locationpath';
私はパーティションをマウントする必要があるときはいつでもこれを実行する必要があります。手動で行うのではなく、外部のハイブテーブルのパーティションを自動検出する方法があります。ハイブで外部表を使用すると、パーティションをインテリジェントに識別できますか?
ALTER TABLE TableName ADD IF NOT EXISTS PARTITION()location 'locationpath';
回復パーティション(MSCKの修復表)
MSCK REPAIR TABLE table_name;
パーティションが自動的に追加されます
動的パーティションを使用すると、ディレクトリを手動で作成する必要はありません。しかし、動的パーティションモードは、それが厳密であるデフォルトで、非厳密に設定する必要が
CREATE External TABLE profile (
userId int
)
PARTITIONED BY (city String)
location '/user/test/profile';
set hive.exec.dynamic.partition.mode=nonstrict;
hive> insert into profile partition(city)
select * from nonpartition;
hive> select * from profile;
OK
1 Chicago
1 Chicago
2 Orlando
とHDFSに
[[email protected] ~]$ hdfs dfs -ls /user/test/profile
Found 2 items
drwxr-xr-x - cloudera supergroup 0 2016-08-26
22:40 /user/test/profile/city=Chicago
drwxr-xr-x - cloudera supergroup 0 2016-08-26
22:40 /user/test/profile/city=Orlando
あなたはそこにどのパーティションを追加していますか?私は 'PARTITION()'の空白を意味します – abhiieor