J'ai un RDD (combinerRDD) sur lequel j'appliqué ci-dessous la transformationRésultat de la transformation sur un vide RDD
JavaPairRDD<String, Integer> counts = combinerRDD.mapToPair(
new PairFunction<Tuple2<LongWritable, Text>, String, Integer>() {
String filename;
Integer count;
Message message;
@Override
public Tuple2<String, Integer> call(Tuple2<LongWritable, Text> tuple) throws Exception {
xlhrCount = 0;
filename = "";
filename = "New_File";
for (JobStep js : message.getJobStep()) {
if (js.getStepName().equals(StepName.NEW_STEP)) {
count += 1;
}
}
return new Tuple2<String, Integer>(filename, xlhrCount);
}
}).reduceByKey(new Function2<Integer, Integer, Integer>() {
@Override
public Integer call(Integer count1, Integer count2) throws Exception {
return (count1 + count2);
}
}
);
Ma question est quand combinerRDD
a des données à l'intérieur, je reçois un bon résultat quand combinerRDD
.Mais est vide le résultat écrit dans HDFS est seulement un fichier _SUCCESS vide. Je m'attendais à 2 fichiers dans le cas d'une transformation sur un RDD vide, c'est-à-dire _SUCCESS et un fichier vide de la partie-00000. Ai-je raison? Combien de fichiers de sortie dois-je obtenir.
Je demande pourquoi c'est parce que j'ai obtenu un résultat différent dans 2 clusters, le code exécuté sur le cluster 1 a abouti au fichier _SUCCESS et le cluster 2 a abouti à _SUCCESS et vide partie-00000. Je suis confus maintenant. Le résultat dépend-il de la configuration du cluster?
Remarque: Je fais une jointure à gauche sur newRDD.leftOuterJoin(combinerRDD)
, ce qui ne me donne aucun résultat (lorsque le combineurRDD n'a que _SUCCESS) et que newRDD contient une valeur.