Enregistrer une étincelle RDD pour le système de fichiers local à l'aide de Java
J'ai un CA qui est généré à l'aide d'Étincelle. Maintenant, si j'écris ce RDD dans un fichier csv, je suis fournies avec des méthodes comme la "saveAsTextFile()" qui retourne un fichier csv pour le HDFS.
Je veux écrire le fichier sur mon système de fichiers local, de sorte que mon SSIS processus peut choisir les fichiers à partir du système et de les charger dans la DB.
Je suis actuellement dans l'impossibilité d'utiliser sqoop.
Est-il quelque part possible en Java, autre que l'écriture de scripts shell pour le faire.
Toute la clarté nécessaire, veuillez le faire savoir.
Pas sûr au sujet de toute Étincelle de la méthode pour ce faire.. Mais vous pouvez toujours ouvrir un fileoutputstream, itérer sur RDD et de l'enregistrer dans le fichier. Le plain old java !
Hey quel chemin êtes-vous à l'aide en saveAsTextFile() la méthode ?? pouvez-vous donner un extrait de code..
J'ai essayé les chemins d'accès suivants: - "hdfs://hadoop/bigdata/", il enregistre le fichier hdfs - Aussi, essayé avec cette où j'ai copié le chemin absolu du fichier "/kanav// de sortie". Cela renvoie à aucune erreur, mais aussi de ne pas créer n'importe quel fichier.
chemin d'accès absolu devrait commencer par file:/// comme indiqué dans la réponse ci-dessous
Hey quel chemin êtes-vous à l'aide en saveAsTextFile() la méthode ?? pouvez-vous donner un extrait de code..
J'ai essayé les chemins d'accès suivants: - "hdfs://hadoop/bigdata/", il enregistre le fichier hdfs - Aussi, essayé avec cette où j'ai copié le chemin absolu du fichier "/kanav// de sortie". Cela renvoie à aucune erreur, mais aussi de ne pas créer n'importe quel fichier.
chemin d'accès absolu devrait commencer par file:/// comme indiqué dans la réponse ci-dessous
OriginalL'auteur Kanav Sharma | 2015-07-06
Vous devez vous connecter pour publier un commentaire.
saveAsTextFile
est capable de prendre en local chemins de système de fichiers (par exemple,file:///tmp/magic/...
). Toutefois, si vous exécutez sur un cluster distribué, vous plus susceptibles de vouloircollect()
les données vers le cluster, puis l'enregistrer avec les opérations de fichiers standard.Si votre fichier est trop grand pour un ordinateur ce n'est pas vraiment beaucoup de sens à saive localement au lieu de hdfs ou d'un autre système de fichiers distribués.
Pas la taille du fichier, mais les fichiers comte est assez bien. Mon processus est en fait conçu pour gérer autour de 400 go de données par heure. @holden j'ai, pour l'instant, réussi à faire cela en utilisant le système de fichiers.copyToLocalFile(). J'ai vérifier pour un jour pour la fiabilité et je voudrais avoir plus d'informations.
Si vos données sont trop gros pour le pilote, alors vous aurez besoin de stocker les données HDFS (ou similaire de système de fichiers distribués) - ou si vous voulez encore de les stocker sur le conducteur à l'aide de toLocalIterator (mais n'oubliez pas de cache de la RDD avant de la main) n'a besoin d'autant de mémoire que la partition la plus grande.
Manque le code pour enregistrer ce à l'aide d'opérations de fichiers standard dans cette réponse.
OriginalL'auteur Holden