2015-05-15 2 views
5

Метод искры saveAsTextFile, который может хранить RDD[T] на диск или hdfs легко.Как загрузить данные из сохраненного файла с помощью Spark

T - произвольный сериализуемый класс.

Я хочу изменить операцию. Интересно, есть ли loadFromTextFile, который может легко загрузить файл в RDD[T]?

Позвольте мне сделать это ясно:

class A extends Serializable { 
... 
} 

val path:String = "hdfs..." 
val d1:RDD[A] = create_A 

d1.saveAsTextFile(path) 

val d2:RDD[A] = a_load_function(path) // this is the function I want 

//d2 should be the same as d1 

ответ

10

Попробуйте использовать d1.saveAsObjectFile(path) для хранения и val d2 = sc.objectFile[A](path) для загрузки.

Я думаю, что вы не можете saveAsTextFile и читать его, как RDD[A] без преобразования из RDD[String]

0

Чтобы создать на основе файла RDD, мы можем использовать SparkContext.textFile API

Ниже приведен пример:

вал Textfile = подкожно. textFile ("input.txt")

Мы можем указать URI явно.

Если файл находится в HDFS:
sc.textFile ("HDFS: // хост: порт/путь_к_файл")

Если файл находится в локальном:
sc.textFile ("Файл:/// путь к файлу/")

Если файл S3:

s3.textFile (" S3N: //mybucket/sample.txt ");

Чтобы загрузить РДД в Speicific Тип:

случае класса Person (имя: String, возраст: Int)..

знач люди = sc.textFile ("employees.txt") карта (_ сплит («,»)). map (p => Person (p (0), p (1) .trim.toInt))

Здесь люди будут иметь тип org.apache.spark.rdd.RDD [ Лицо]

+0

Но он генерирует RDD [String], мне нужно РДД [T]. – worldterminator

+0

Я думаю, что Spark по умолчанию не поддерживает это. Но вы можете преобразовать исходный RDD в определенный тип. Я обновляю свой ответ. Пожалуйста, подтвердите. – Ramana

-1

Если вы хотите схему, которую вы, вероятно, хотите использовать тип вывода, который держит его (как Avro, паркет и т.д.) иначе, когда вам нужно будет сопоставить RDD и преобразовать его в схему (тип), которую вы хотите.

Как полагает датский, вы можете рассмотреть возможность использования SparkSQL/DataFrame, который построен на понятии схемы

Смежные вопросы