2015-04-29 6 views

Odpowiedz

12

Można spróbować następujących składników, które jest bardzo proste:

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

Po prostu odwzorować RDD [(A, B)] do RDD [ciąg] i zapisz go.

+0

@ Jeśli masz komentarz, użyj pola komentarza i nie edytuj odpowiedzi! Również kod, który zasugerowałeś w edycji, nie jest związany z pytaniem tutaj. Twój kod działa z RDD [Wiersz], co nie ma tu miejsca. – eliasah

1

Spróbuj użyć jawnie, używając mkString, zamiast tylko bezpośrednio drukować krotkę.

2

Dla ludzi w świecie Java, oto rozwiązanie, które zaczyna się od DataFrame, konwertuje je do RDD, a następnie zapisuje wyniki. Wiersze RDD przechodzą przez funkcję mapy, która przekształca wiersz w ciąg.

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

Przed dokonaniem saveAsTextFile Użyj map(x => x.mkString(",")

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

wyjście nie będzie miał wspornik.

0

RDD można zapisać za pomocą rdd.map (REC => rec.productIterator.mkString (""). SaveAsTextFile (ścieżka) Wynikowy zestaw danych nie będą mieć nawiasów.

0

Wiem, że jest oznaczony Scala, ale tylko dodać na stronie Pythona w przypadku gdy ktoś jest ciekawy. Tworzenie i zapisać jako RDD jest

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

to uratuje wiersze tak jak wspomniałeś

('one', 1) 

Ale jeśli wykonaj następujące czynności powinno działać

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

i powinieneś dostać

one,1 

pamiętać, że w tym konkretnym przypadku trzeba zdawać sobie sprawę z typów na złączenie (sprawdź STR (y)), w przeciwnym razie uzyskasz następujący wyjątek:

TypeError: cannot concatenate 'str' and 'int' objects 
Powiązane problemy