scala - Spark & Scala - 无法从 RDD 中过滤空值

标签 scala hadoop apache-spark bigdata

我试图从 RDD 中过滤空值但失败了。这是我的代码:

val hBaseRDD = sc.newAPIHadoopRDD(conf, classOf[TableInputFormat],
      classOf[org.apache.hadoop.hbase.io.ImmutableBytesWritable],
      classOf[org.apache.hadoop.hbase.client.Result])

val raw_hbaserdd = hBaseRDD.map{
  kv => kv._2
}

val Ratings = raw_hbaseRDD.map {
      result =>  val x = Bytes.toString(result.getValue(Bytes.toBytes("data"),Bytes.toBytes("user")))
                 val y = Bytes.toString(result.getValue(Bytes.toBytes("data"),Bytes.toBytes("item")))
                 val z = Bytes.toString(result.getValue(Bytes.toBytes("data"),Bytes.toBytes("rating")))

                 (x,y, z)
    }
Ratings.filter ( x => x._1 != null )

Ratings.foreach(println)

Debugging的时候,filter后面还是出现了null值:

(3359,1494,4)
(null,null,null)
(28574,1542,5)
(null,null,null)
(12062,1219,5)
(14068,1459,3)

有更好的主意吗?

最佳答案

Ratings.filter ( x => x._1 != null ) 

这实际上转换了 RDD,但您没有使用那个特定的 RDD。你可以试试

Ratings.filter(_._1 !=null).foreach(println)

关于scala - Spark & Scala - 无法从 RDD 中过滤空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38738930/

相关文章:

apache-spark - 如何将 LIBSVM 模型(使用 LIBSVM 保存)读入 PySpark?

json - Scala Spark - 将 JSON 列拆分为多列

scala - 结构化流 - 无法使用 FileContext API 管理 AWS S3 上的元数据日志文件

jquery - ScalaJS/ScalaTest : ReferenceError: jQuery is not defined

scala - 获取自定义 Scala 对象的类

scala - 无法在 IntelliJ + sbt-idea-plugin 中调试 Scala 应用程序

java - 在 hadoop 中运行多个 MapReduce 作业

Hadoop 一个Map和多个Reduce

java - 在Bluemix上公开自己的服务,该服务在后台使用Hadoop MapReduce?

Scalatest 和 scalamock - 涉及 SuiteMixin 的依赖问题