comment obtenir le nom du fichier d'entrée en tant que colonne dans la requête Hive
J'ai une ruche tables externes qui mappés à un répertoire.
Ce répertoire comprend plusieurs fichiers.
Je veux exécuter la requête, par exemple, trouver de nom de fichier où il y a un utilisateur "abc"
select file_name , usr from usrs_tables where usr = "abc"
Mais bien sûr, ces données ne comprend pas de nom de fichier à l'intérieur.
Dans MapReduce je peux le faire par
FileSplit fileSplit = (FileSplit)context.getInputSplit();
String filename = fileSplit.getPath().getName();
System.out.println("File name "+filename);
System.out.println("Directory and File name"+fileSplit.getPath().toString());
Comment puis-je le faire dans la Ruche?
source d'informationauteur Julias
Vous devez vous connecter pour publier un commentaire.
Oui, vous pouvez récupérer le fichier, le dossier a été trouvé dans l'aide de la colonne virtuelle nommée
INPUT__FILE__NAME
par exemple:rendements quelque chose comme:
Si nécessaire, utiliser le les fonctions de chaîne à la garniture de l'hôte et de répertoires à partir de l'uri.
Vous pouvez trouver de la documentation sur les colonnes virtuelles ici: https://cwiki.apache.org/confluence/display/Hive/LanguageManual+VirtualColumns
Chaque table dans la Ruche a deux des colonnes virtuelles. Ils sont
INPUT__FILE__NAME
BLOCK__OFFSET__INSIDE__FILE
INPUT__FILE__NAME
donne le nom du fichier.BLOCK__OFFSET__INSIDE__FILE
est la position dans le fichier.Supposons que si nous voulons trouver le nom du fichier correspondant à chaque enregistrement dans un fichier. Nous pouvons utiliser la
INPUT__FILE__NAME
colonne. Cette fonctionnalité est disponible à partir de la Ruche versions au-dessus de 0,8. Un petit exemple est donné ci-dessous.Requête
Cela nous donnera le nom de fichier correspondant à chaque enregistrement. Si vous voulez obtenir les noms de fichiers correspondant à un tableau de la ruche, la requête ci-dessous va vous aider.
Lien mis à jour sur les colonnes virtuelles dans la ruche: https://cwiki.apache.org/confluence/display/Hive/LanguageManual+VirtualColumns