У меня есть RDD, элементы которого имеют тип (Long, String). По какой-то причине я хочу сохранить весь RDD в HDFS, а затем снова прочитать RDD в программе Spark. Можно ли это сделать? И если да, то как?Как сохранить RDD в HDFS, а затем прочитать его обратно?
ответ
Это возможно.
В RDD есть saveAsObjectFile
и saveAsTextFile
функции. Кортежи хранятся как (value1, value2)
, так что вы можете позже разобрать его.
Чтение может быть сделано с textFile
функцией от SparkContext, а затем .map
устранить ()
Итак: Версия 1:
rdd.saveAsTextFile ("hdfs:///test1/");
// later, in other program
val newRdds = sparkContext.textFile("hdfs:///test1/part-*").map (x => {
// here remove() and parse long/strings
})
Версия 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])
Я бы рекомендовал используйте DataFrame, если ваш RDD находится в табличном формате. кадр данных представляет собой таблицу или двухмерную структуру, подобную массиву, в которой каждый столбец содержит измерения для одной переменной, и каждая строка содержит один случай. DataFrame имеет дополнительные метаданные из-за его табличного формата, что позволяет Spark выполнять определенные оптимизации по завершенному запросу. , где RDD - это гибкий распределенный набор данных, который представляет собой большую часть абстракции черных ящиков или ячеек данных, которые невозможно оптимизировать. Однако вы можете перейти от DataFrame к RDD и наоборот, и вы можете перейти от RDD к DataFrame (если RDD находится в табличном формате) с помощью метода toDF.
Ниже приведен пример для создания/хранить DataFrame в CSV и паркета в формате 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. Как сохранить буфер кадра, а затем вернуть его обратно
- 2. сохранение NSString, а затем чтение его обратно
- 3. Как загрузить TXT, а затем прочитать его?
- 4. Удалите tableorterpager, а затем верните его обратно
- 5. Прочитать в произвольном файле как строку, а затем сохранить обратно в файл? Всегда поврежден
- 6. Можно ли сохранить RDD на HDFS?
- 7. Как сохранить список в файл, а затем прочитать элементы обратно в ListBox?
- 8. Скачать файл в формате PDF и сохранить его в SDCard, а затем прочитать его оттуда
- 9. Можно ли сохранить объект-c-блок в файл, а затем прочитать его оттуда, чтобы его использовать?
- 10. записывает RDD в HDFS в контексте искрообразования
- 11. Как отцепить div от родителя, а затем вернуть его обратно?
- 12. сохранить словарь для чтения и прочитать его обратно
- 13. изменить свойство объекта массива, а затем сохранить обратно в localStorage?
- 14. Как прочитать запись из HBase, затем сохранить в Spark RDD (Resilient Distributed Datasets); и читать одну запись RDD, а затем записывать в HBase?
- 15. В java, как записать объект в файл, а затем прочитать его из файла и преобразовать его обратно в исходный объект в HDFS?
- 16. Сжимая предложение в формате ASCII, а затем распаковка его обратно
- 17. Scala прочитать файл и разделить, а затем сохранить в Валу
- 18. Как настроить безопасный файл cookie, а затем прочитать его содержимое?
- 19. fadeIn(); затем исчезает, а затем обратно?
- 20. как ждать завершения загрузки файла, а затем прочитать его
- 21. Как сохранить локальные данные пользователя в AS3, а затем прочитать его/экспортировать?
- 22. Как загрузить AssetBundle, а затем сохранить его в устройстве
- 23. Как загрузить изображение, а затем сохранить его в базе данных?
- 24. Как сохранить счет в SharedPreferences, а затем обновить его?
- 25. Лучший способ отправить файл на SQL-сервер и сохранить его, а затем прочитать его из БД?
- 26. Прочитать файл и сохранить как двойной массив, а затем записать его как новый файл
- 27. Вывод трубы из подпроцесса в файл, а затем прочитать его
- 28. Вставить файл Pdf в DLL, а затем прочитать его
- 29. Как сохранить результат на карте в C++, а затем перебрать его, а затем распечатать результат?
- 30. IPad: Перемещение UIView с анимацией, а затем переместить его обратно
VOW, то есть в чистом виде раствора :). Но как мы читаем, используя textFile, поскольку saveAsText создавал много разных файлов. – pythonic
@pythonic См. Мое обновление - вы можете прочитать диапазон файлов. Каждая часть RDD сохраняется в файле 'part-XYZŹŻ', поэтому мы можем читать только каждый файл такого имени –