74 votes

Où Hive stocke-t-il ses fichiers dans HDFS?

Hadoop et Hive étant relativement nouveaux, cette question est peut-être très stupide et pourtant, je ne passais que la majeure partie de la journée à chercher une réponse. Je dois trouver le mappage entre les tables Hive et les fichiers HDFS réels (ou plutôt les répertoires) qu'ils représentent. J'ai besoin d'accéder directement aux fichiers de la table. Aider quelqu'un?

60voto

Just Points 211
hive -S -e "describe formatted <table_name> ;" | grep 'Location' | awk '{ print $NF }'

58voto

Nija Points 3625

L'emplacement où elles sont stockées sur le HDFS est assez facile à comprendre une fois que vous savez où chercher. :)

Si vous allez à l' http://NAMENODE_MACHINE_NAME:50070/ dans votre navigateur, cela devrait vous amener à une page avec un Browse the filesystem lien.

Dans l' $HIVE_HOME/conf répertoire, il y est l' hive-default.xml et/ou hive-site.xml qui a hive.metastore.warehouse.dir de la propriété. Cette valeur est l'endroit où vous souhaitez naviguer après avoir cliqué sur l' Browse the filesystem lien.

Dans le mien, c'est /usr/hive/warehouse. Une fois que je navigue à cet endroit, je vois le nom de mes tables. En cliquant sur un nom de table (qui est juste un dossier) exposera ensuite les partitions de la table. Dans mon cas, j'ai actuellement ne l'ai partitionné sur date. Quand je clique sur le dossier à ce niveau, je vais donc voir les fichiers (plus de partitionnement aura plus de niveaux). Ces fichiers sont où les données sont enregistrées sur le HDFS.

Je n'ai pas tenté d'accéder à ces fichiers directement, je suis en supposant qu'il peut être fait. Je prendrais le plus GRAND soin, si vous envisagez de les éditer. :) Pour moi, j'en avais trouver un moyen de faire ce dont j'ai besoin sans accès direct à la Ruche des données sur le disque. Si vous avez besoin d'accéder à des données brutes, vous pouvez utiliser une requête de la Ruche et afficher le résultat dans un fichier. Elles ont exactement la même structure (séparateur entre les colonnes, ect) que les fichiers sur l' HDFS. Je ne requêtes comme ça tout le temps et les convertir en CSVs.

La section sur comment écrire des données à partir de requêtes sur le disque est http://wiki.apache.org/hadoop/Hive/LanguageManual/DML#Writing_data_into_filesystem_from_queries

HTH

26voto

user1959524 Points 81

Dans le type de terminal Hive: hive> set hive.metastore.warehouse.dir (le chemin sera imprimé)

6voto

tdogger Points 21

Il est également très possible que taper show create table <table_name> dans la ruche cli vous donne l'emplacement exact de votre table de ruche.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X