java - examples - swing file explorer




Créer une table externe, l'emplacement contient plusieurs fichiers à l'intérieur (2)

Par défaut, Hive lit uniquement les fichiers (pas les répertoires) à l'intérieur de l'emplacement spécifié dans la table externe. Si vous souhaitez activer l'ajout des répertoires, définissez le paramètre ci-dessous:

définissez mapred.input.dir.recursive = true;

CREATE EXTERNAL TABLE IF NOT EXISTS LOGS (LGACT STRING,NTNAME STRING)  
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'  
LOCATION '/user/hive/warehouse/LOGS/test';

sous le dossier 'test' j'écris des fichiers tous les jours. par exemple:

/user/hive/warehouse/LOGS/test/20170420
/user/hive/warehouse/LOGS/test/20170421
/user/hive/warehouse/LOGS/test/20170422

Je ne vois aucune donnée dans la table LOGS que j'ai créée.

Mais, je crée la table en utilisant

LOCATION '/user/hive/warehouse/LOGS/test/20170422';

Je peux voir ces records de jours.

Je veux voir toutes les données sous / répertoire de test dans ma table HIVE, aussi le répertoire / test est rempli tous les jours avec de nouveaux fichiers.


Option 1

Afin de soutenir les sous-répertoires

set mapred.input.dir.recursive=true;

et si vous version Hive est inférieure à 2.0.0, puis aussi

set hive.mapred.supports.subdirectories=false;

Option 2

Créer une table partitionnée

CREATE EXTERNAL TABLE IF NOT EXISTS LOGS (LGACT STRING,NTNAME STRING)  
partitioned by (dt date)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'  
LOCATION '/user/hive/warehouse/LOGS/test';
alter table LOGS add if not exists partition (dt=date '2017-04-20') LOCATION '/user/hive/warehouse/LOGS/test/20170420';
alter table LOGS add if not exists partition (dt=date '2017-04-21') LOCATION '/user/hive/warehouse/LOGS/test/20170421';
alter table LOGS add if not exists partition (dt=date '2017-04-22') LOCATION '/user/hive/warehouse/LOGS/test/20170422';

Il serait plus facile à gérer si vous gardez vos répertoires en utilisant la convention standard, par exemple dt=2017-04-20 au lieu de 20170420