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.
2 odpowiedzi
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ź.
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());
Podobne pytania
Powiązane pytania
Nowe pytania
python
Python to wielozadaniowy, wielozadaniowy język programowania dynamicznie typowany. Został zaprojektowany tak, aby był szybki do nauczenia się, zrozumienia i użycia oraz wymuszania czystej i jednolitej składni. Należy pamiętać, że Python 2 oficjalnie nie jest obsługiwany od 01-01-2020. Mimo to, w przypadku pytań Pythona specyficznych dla wersji, dodaj znacznik [python-2.7] lub [python-3.x]. Korzystając z wariantu Pythona (np. Jython, PyPy) lub biblioteki (np. Pandas i NumPy), należy umieścić go w tagach.