Apache spark 如何在Spark中从s3读取.seq文件

Apache spark 如何在Spark中从s3读取.seq文件,apache-spark,spark-streaming,Apache Spark,Spark Streaming,我正在尝试从s3中删除.seq文件。当我尝试使用 sc.textFile("s3n://logs/box316_0.seq").take(5).foreach(println) 它输出- SEQorg.apache.hadoop.io.Text"org.apache.hadoop.io.BytesWritable'org.apache.hadoop.io.compress.GzipCodecp 然后是一堆编码字符。那是什么格式?我应该如何解码这个文件?我第一次使用hadoop,所以

我正在尝试从s3中删除.seq文件。当我尝试使用

sc.textFile("s3n://logs/box316_0.seq").take(5).foreach(println) 
它输出-

    SEQorg.apache.hadoop.io.Text"org.apache.hadoop.io.BytesWritable'org.apache.hadoop.io.compress.GzipCodecp
然后是一堆编码字符。那是什么格式?我应该如何解码这个文件?我第一次使用hadoop,所以请大方:)

更新:我试过了

sc.sequenceFile[Text,BytesWritable]("s3n://logs/box316_0.seq").take(5).foreach(println)
所以数据是存储在序列文件中的Json blob,它给了我-

 Serialization stack: - object not serializable 
(class: org.apache.hadoop.io.Text, value: 5) - 
field (class: scala.Tuple2, name: _1, type: class java.lang.Object) 
- object (class scala.Tuple2, (5,7g 22 73 69 6d 65 43 74 71 9d 90 92 3a .................. – user1579557 5 mins ago     

对于序列文件,您必须了解其类型。看起来您的文本是可写的字节。试试这个:

sc.sequenceFile[Text,BytesWritable]("s3n://logs/box316_0.seq").take(5).foreach(println) 
尝试:


我们经常遇到这个问题,于是我们就着手解决了这个问题。我们称之为readSEQ。这使您可以将序列文件读入拼花地板、AVRO或JSON


谢谢。因此,数据是一个json blob。因此,它给了我以下消息-序列化堆栈:-对象不可序列化(类:org.apache.hadoop.io.Text,值:5)-字段(类:scala.Tuple2,名称:_1,类型:class java.lang.object)-对象(类scala.Tuple2,(5,7g 22 73 69 6d 65 43 74 71 9d 90 92 3a。。。。。。。。。。。。。。。。。。
val path = "s3n://logs/box316_0.seq"
val seq = sc.sequenceFile[LongWritable,BytesWritable](path)
val usableRDD = seq.map({case (_,v : BytesWritable) =>  Text.decode(v.getBytes))