Чтение файла последовательности с Int и String логически,
тогда, если я сделаю это:
val sequence_data = sc.sequenceFile("/seq_01/seq-directory/*", classOf[IntWritable], classOf[Text])
.map{case (x, y) => (x.toString(), y.toString().split("/")(0), y.toString().split("/")(1))}
.collect
это нормально, поскольку IntWritable преобразуется в строку.
Если я сделаю это:
val sequence_data = sc.sequenceFile("/seq_01/seq-directory/*", classOf[IntWritable], classOf[Text])
.map{case (x, y) => (x, y.toString().split("/")(0), y.toString().split("/")(1))}
.collect
тогда я сразу получаю эту ошибку:
org.apache.spark.SparkException: Job aborted due to stage failure: Task 5.0 in stage 42.0 (TID 692) had a not serializable result: org.apache.hadoop.io.IntWritable
Основная причина не совсем ясна - сериализация, но почему так сложно? Это еще один тип аспекта сериализации, который я отмечаю. Также это отмечается только во время выполнения.