Mam RDD, którego elementy są typu (Long, String). Z jakiegoś powodu chcę zapisać cały RDD w HDFS, a później także przeczytać RDD z powrotem w programie Spark. czy jest to możliwe do zrobienia? A jeśli tak, to w jaki sposób?Jak zapisać RDD w HDFS, a potem go odczytać?
Odpowiedz
Jest to możliwe.
W RDD masz funkcje saveAsObjectFile
i saveAsTextFile
. Krotki są zapisywane jako (value1, value2)
, dzięki czemu można je później parsować.
Reading można zrobić z textFile
funkcji z SparkContext a następnie .map
wyeliminować ()
Więc: Wersja 1:
rdd.saveAsTextFile ("hdfs:///test1/");
// later, in other program
val newRdds = sparkContext.textFile("hdfs:///test1/part-*").map (x => {
// here remove() and parse long/strings
})
Wersja 2:
rdd.saveAsObjectFile ("hdfs:///test1/");
// later, in other program - watch, you have tuples out of the box :)
val newRdds = sparkContext.sc.sequenceFile("hdfs:///test1/part-*", classOf[Long], classOf[String])
polecam użyj DataFrame, jeśli Twój RDD ma format tabelaryczny. Ramka danych to tabela lub dwuwymiarowa struktura tablicowa, w której każda kolumna zawiera pomiary jednej zmiennej, a każdy wiersz zawiera jeden przypadek. a DataFrame ma dodatkowe metadane ze względu na format tabelaryczny, który pozwala Spark na uruchomienie pewnych optymalizacji w sfinalizowanym zapytaniu. gdzie RDD jest odpornym, rozproszonym zestawem danych, który jest bardziej blackboxem lub rdzeniem abstrakcji danych, których nie można zoptymalizować. Można jednak przejść z DataFrame do RDD i odwrotnie, a można przejść z RDD do DataFrame (jeśli RDD jest w formacie tabelarycznym) za pomocą metody toDF.
Poniżej znajduje się przykład utworzyć/zapisać DataFrame w formacie CSV i parkiet HDFS,
val conf = {
new SparkConf()
.setAppName("Spark-HDFS-Read-Write")
}
val sqlContext = new SQLContext(sc)
val sc = new SparkContext(conf)
val hdfs = "hdfs:///"
val df = Seq((1, "Name1")).toDF("id", "name")
// Writing file in CSV format
df.write.format("com.databricks.spark.csv").mode("overwrite").save(hdfs + "user/hdfs/employee/details.csv")
// Writing file in PARQUET format
df.write.format("parquet").mode("overwrite").save(hdfs + "user/hdfs/employee/details")
// Reading CSV files from HDFS
val dfIncsv = sqlContext.read.format("com.databricks.spark.csv").option("inferSchema", "true").load(hdfs + "user/hdfs/employee/details.csv")
// Reading PQRQUET files from HDFS
val dfInParquet = sqlContext.read.parquet(hdfs + "user/hdfs/employee/details")
- 1. Napisz RDD do HDFS w kontekście strumieniowania iskrowego
- 2. Pobierz plik PDF i zapisać go do sdcard a następnie odczytać go stamtąd
- 3. Jak mogę odczytać/zapisać pliki binarne?
- 4. Jak odczytać/zapisać ustawienia App.config w PowerShell?
- 5. Dlaczego partycja Spark RDD ma limit 2 GB dla HDFS?
- 6. Dlaczego System.Random podaje "1" wiele razy z rzędu, a potem przez chwilę, a potem znowu?
- 7. Git każe mi zaciągnąć, a potem popełnić, a następnie wyciągnąć?
- 8. Jak odczytać dane wejściowe z formularza HTML i zapisać go w pliku - Golang
- 9. Jak odczytać/zapisać plik na iOS, w symulatorze, a także na urządzeniu?
- 10. ścieżka pliku w hdfs
- 11. Jak odczytać wartości z pliku Excela i zapisać w Array?
- 12. Jak utworzyć kolekcję RDD z RDD?
- 13. Jak mogę odczytać i zapisać dane JPEG w ujęciu pikselowym?
- 14. Jak odczytać/zapisać wartości typu z pamięci "surowej" w C?
- 15. Jak odczytać plik i zapisać w pliku tekstowym?
- 16. Jak odczytać/zapisać pliki w module jądra systemu Linux?
- 17. Jak odczytać i zapisać dbf w natywny sposób?
- 18. Spark trybie autonomicznym: Jak kompresować wyjście zapłonową pisemnej do HDFS
- 19. Jak otworzyć (odczytać-zapisać) lub utworzyć plik z dozwolonym obcięciem?
- 20. odczytać plik PPM i zapisać go w tablicy; kodowane za pomocą C
- 21. Jak mogę skutecznie dołączyć do dużego rdd do bardzo dużego rdd w iskrze?
- 22. Filtr RDD oparty na numerze wiersza
- 23. Django - jak utworzyć plik i zapisać go w FileField modelu?
- 24. VB - Jak mogę odczytać i zapisać plik binarny?
- 25. Jak zapisać ciąg znaków w pliku cookie i pobrać go?
- 26. jak programowo zrobić zrzut ekranu i zapisać go w galerii?
- 27. Extract Obwiednia i zapisać go jako obraz
- 28. Jak napisać aplikację dla systemu Android, aby sysfs odczytać/zapisać.?
- 29. Jak odczytać plik programu Excel w wersji go?
- 30. window.print() z Chrome podokno - blisko, a potem pokona
ślubować, że jest miłe rozwiązanie :). Ale jak odczytujemy za pomocą textFile, ponieważ saveAsText tworzyłoby wiele różnych plików. – pythonic
@pythonic Zobacz moją aktualizację - możesz odczytać zakres pliku. Każda część RDD zapisywana jest w pliku 'part-XYZŹŻ', dzięki czemu możemy odczytać każdy plik o takiej nazwie –