Mam zadanie Mapredema, które próbuję migrować do Prappark. Czy jest jakiś sposób na określenie nazwy pliku wyjściowego, zamiast zdobycia part-xxxxx?

W panie, używałem klasy org.apache.hadoop.mapred.lib.MultipleTextOutputFormat, aby to osiągnąć,

PS: Spróbowałem metody saveAsTextFile(). Na przykład:

lines = sc.textFile(filesToProcessStr)
counts = lines.flatMap(lambda x: re.split('[\s&]', x.strip()))\
.saveAsTextFile("/user/itsjeevs/mymr-output")

Spowoduje to utworzenie plików part-0000.

[13:46:25] [spark] $ hadoop fs -ls /user/itsjeevs/mymr-output/
Found 3 items
-rw-r-----   2 itsjeevs itsjeevs          0 2014-08-13 13:46 /user/itsjeevs/mymr-output/_SUCCESS
-rw-r--r--   2 itsjeevs itsjeevs  101819636 2014-08-13 13:46 /user/itsjeevs/mymr-output/part-00000
-rw-r--r--   2 itsjeevs itsjeevs   17682682 2014-08-13 13:46 /user/itsjeevs/mymr-output/part-00001

EDYTUJ

Niedawno przeczytaj Artykuł, który ułatwiłby życie dla użytkowników iskier.

6
Jeevs 13 sierpień 2014, 22:51

2 odpowiedzi

Najlepsza odpowiedź

Spark używa również hadoop pod maską, więc prawdopodobnie możesz dostać to, czego chcesz. W ten sposób realizowany jest saveAsTextFile:

def saveAsTextFile(path: String) {
  this.map(x => (NullWritable.get(), new Text(x.toString)))
    .saveAsHadoopFile[TextOutputFormat[NullWritable, Text]](path)
}

Możesz przejść w dostosowywanym OutputFormat do saveAsHadoopFile. Nie mam pomysłu, jak to zrobić z Pythona. Przepraszam za niekompletną odpowiedź.

4
Daniel Darabos 14 sierpień 2014, 14:34

Twoje pliki wyjściowe będą wyglądać;

MyFILENAME-R-00000 MYFILENAME-R-00001

        SparkConf sparkConf = new SparkConf().setAppName("WCSYNC-FileCompressor-ClusterSaver");
        SparkContext sc = new SparkContext(sparkConf);
            JavaSparkContext context = new JavaSparkContext(sc)
context.hadoopConfiguration().set("mapreduce.output.basename", "myfilename");




saveAsNewAPIHadoopFile(outputpath,
                                Text.class,
                                Text.class,
                                TextOutputFormat.class,
                                context.hadoopConfiguration());
-1
Coder123 15 sierpień 2019, 15:22