Spark的新手。谷歌搜索此转换时,结果很少,我认为这应该是一个常见的操作(从序列文件中读取并解析每一行)。我发现了将BytesWritable转换为String的两种不同方法。原来方法1给出了错误的结果,原因有何建议?
val lines = spark
.sparkContext
.sequenceFile[org.apache.hadoop.io.BytesWritable, org.apache.hadoop.io.BytesWritable]("file://"+data_dir)
//Method-1
val wrong = lines
.map(_._2)
.map(byte => org.apache.hadoop.io.Text.decode(byte.getBytes()))
.flatMap(parseEachLine)
//Method-2
val correct = lines
.map(_._2)
.map(bytes => new String(bytes.copyBytes(), 0, bytes.getLength, "utf-8"))
.flatMap(parseEachLine)
如果可能,请提示为什么没人问这个问题。这是否意味着这种转换是不必要的(如果为true,则如何拆分行并创建DataFrame)?