2015-04-29 12 views

risposta

12

È possibile provare la seguente, che è molto semplice:

rdd.map(x => x._1 + "," + x._2).saveAsTextFile(path) 

Basta mappare il tuo RDD [(A, B)] a un RDD [String] e salvarlo.

+0

@Ashish se si dispone di un commento, si prega di utilizzare la casella di commento e non modificare la risposta! Anche il codice che hai suggerito nella modifica non è correlato alla domanda qui. Il tuo codice funziona con un RDD [Row] che non è il caso qui. – eliasah

1

Provare esplicitamente con mkString anziché stampare semplicemente una tupla direttamente.

2

Per gli utenti del mondo Java, ecco una soluzione che inizia con DataFrame, la converte in un RDD e quindi scrive i risultati. Le righe del RDD vengono passate attraverso la funzione mappa che converte la riga in una stringa.

public void write(DataFrame output) { 
    String path = "your_path_goes_here"; 
    output 
     .toJavaRDD() 
     .map(new BracketRemover()) 
     .saveAsTextFile(path); 
} 

protected class BracketRemover implements Function<Row, String> { 
    public String call(Row r) { 
     return r.mkString(","); 
    } 
} 
4

Prima di fare uso saveAsTextFilemap(x => x.mkString(",")

rdd.map(x => x.mkString(",").saveAsTextFile(path)

uscita non avrà staffa.

0

È possibile salvare RDD utilizzando rdd.map (rec => rec.productIterator.mkString (""). SaveAsTextFile (percorso) risultante set di dati non avrà parentesi.

0

So che è etichettato Scala, ma solo per aggiungere dalla parte di Python nel caso in cui qualcuno è curioso. Creare la RDD e salvare come è

rdd_of_tuples = sc.parallelize([('one',1),('two',2)]) 
rdd_of_tuples.saveAsTextFile('/user/cloudera/rdd_of_tuples') 

Ciò farà risparmiare le righe come questo come si parla

('one', 1) 

Ma se lo fate il seguente dovrebbe funzionare

rdd_of_text = rdd_of_tuples.map(lambda (x,y): x + ',' + str(y)).saveAsTextFile('/user/cloudera/rdd_of_text') 

e si dovrebbe ottenere

one,1 

Si noti che in questo caso particolare è necessario essere consapevoli dei tipi per concatenare (controllare la str (y)), altrimenti si otterrebbe la seguente eccezione

TypeError: cannot concatenate 'str' and 'int' objects 
Problemi correlati