l'exportation de la Ruche de table au format csv dans hdfs
Je sais qu'il existe un problème connu avec des séparateurs lors de l'enregistrement d'une table au format csv (ou autre fichier texte) dans la Ruche. Alors je me demandais si vous les gars peuvent m'aider à obtenir autour de cela.
J'ai une table existante (Tableau A) et je voudrais l'enregistrer dans le format csv pour hdfs. De lire les autres réponses, je crois que j'aurais d'abord créer une table externe (mais je ne suis pas sûr de savoir comment le tout aurait l'air).
Peut aider quelqu'un?
Personnellement, j'aimerais utiliser
Je veux éviter d'enregistrer un fichier volumineux dans le répertoire local si possible. Mon problème est que je puis avoir besoin de charger le fichier dans R et pour ce faire, vous spécifiez normalement un délimiteur, vous ne savez pas comment cela pourrait fonctionner (ou si il fonctionne) avec un personnage invisible.
- Je charger des données à partir de hdfs d'étincelle et de spécifier le délimiteur comme
insert overwrite directory
et ont un \001
fichier délimité. Mais si vous ont un csv, je pense que vous êtes mieux lotis de la tuyauterie de la requête dans un local .csv et ensuite hadoop fs -put
-ing dans hdfs, qui est décrit ici stackoverflow.com/questions/18129581/...Je veux éviter d'enregistrer un fichier volumineux dans le répertoire local si possible. Mon problème est que je puis avoir besoin de charger le fichier dans R et pour ce faire, vous spécifiez normalement un délimiteur, vous ne savez pas comment cela pourrait fonctionner (ou si il fonctionne) avec un personnage invisible.
- Je charger des données à partir de hdfs d'étincelle et de spécifier le délimiteur comme
"\001"
. Je n'ai jamais eu (une raison) pour importer un fichier à partir de HDFS à la R mais je suppose qu'il peut prendre n'importe quel délimiteur, tant qu'il est correctement spécifié.OriginalL'auteur Laura | 2015-05-13
Vous devez vous connecter pour publier un commentaire.
Essayer dans la ruche shell:
Changer votre
/path/to/csv
à l'emplacement où vous souhaitez stocker le fichier csv.hivetablename
à votre table de la ruche pour être stocké dans le format csv.Dans ce cas, à l'exclusion de
LOCAL
et en spécifiant le HDFS chemin devrait faire l'affaire.OriginalL'auteur Rajesh N
Ce processus en trois étapes a bien fonctionné pour moi:
dans la RUCHE, créer une nouvelle table temporaire stocké en tant que fichier texte
aussi dans la RUCHE, écrire la source de données dans la table temporaire
À partir de la ligne de commande, copie du tableau de la Ruche à partir de son emplacement dans HDFS pour vous de fichiers local d'inspection doit faire apparaître le fichier csv (renommer en conséquence, si désiré)
Si vous exécutez la commande
SHOW CREATE TABLE temp_table
dans la RUCHE, il vous indiquera l'emplacement exact de la table dans HDFS, par exempleOriginalL'auteur Hendrik F
Pour la table externe dans la ruche, vous pouvez suivre les étapes ci-dessous:
Créer une table externe dans la ruche
CRÉER une TABLE EXTERNE external_table( INT nombre, CHAÎNE de nom) FORMAT de LIGNE DÉLIMITÉ FIELDS TERMINATED BY ',' LOCATION '/utilisateur/ruche/externe/mytable/';
2. Charger le fichier de données local à HDFS emplacement
Les deux étapes ci-dessus peuvent résoudre votre problème.
'/Utilisateur/ruche/externe/mytable/'; l'emplacement de la valeur est le HDFS emplacement du répertoire et non PAS de répertoire local. tout en déplaçant le fichier c'est à dire hadoop fs -mettre /home/user1/Bureau/nom de fichier.csv /utilisateur/ruche/externe/mytable/ , c'est à partir du répertoire local à HDFS emplacement de répertoire
ma table est déjà stockées dans hdfs et peut être consulté avec un /utilisateur/chemin de la ruche...
Si vous pouvez accéder au fichier csv de données à l'aide de select de la requête et ouvrez le fichier csv à l'aide de hadoop fs -cat 'file-path' correctement, alors maintenant, déplacez le fichier csv à l'emplacement requis si vous le souhaitez.
OriginalL'auteur Farooque