-----------SparkSQL读取Hbase表,操作DataFrame时报错------------
-------------代码如下---------------------

解决方案 »

  1.   

    目测是你有一行age为null了,试试where age is not null and age > 25
      

  2.   

    表的数据没有空值,而且试了这句SQL也是同样的错误。感觉不是SQL的问题,好像是与hbase整合的问题,因为不管查询哪一列,只要用where筛选就会报这个错误。
      

  3.   

    补充一下:
    同样的表,如果从MySQL中读取生成DataFrame,执行操作就没有任何问题。
    从Hbase中读取,只要用到where过滤,或者用filter()方法,都会报上述错误。下边是表数据情况:
      

  4.   

    表的数据没有空值,而且试了这句SQL也是同样的错误。感觉不是SQL的问题,好像是与hbase整合的问题,因为不管查询哪一列,只要用where筛选就会报这个错误。
    你试一下Hive挂HBase外表的形式,在Hive测试一下,再由Spark访问Hive这个表
      

  5.   

    表的数据没有空值,而且试了这句SQL也是同样的错误。感觉不是SQL的问题,好像是与hbase整合的问题,因为不管查询哪一列,只要用where筛选就会报这个错误。
    你试一下Hive挂HBase外表的形式,在Hive测试一下,再由Spark访问Hive这个表谢谢,我没有用过Hive。
    上面是用的Hbase-Spark.jar第三方依赖jar包,实在解决不了了,我猜测是版本兼容的问题,所以放弃了这种方法。
    后来我试了试先将Hbase表读成RDD,然后用官网上说的,以编程的方式指定 Schema,将RDD转化为DataFrame的方式,就没有问题了。
    虽然代码复杂了不少,灵活性也很差,但是暂时这能用这种办法了。
      

  6.   

    spark-hbase已经很久不更新了吧,这个不要用
      

  7.   

    表的数据没有空值,而且试了这句SQL也是同样的错误。感觉不是SQL的问题,好像是与hbase整合的问题,因为不管查询哪一列,只要用where筛选就会报这个错误。
    你试一下Hive挂HBase外表的形式,在Hive测试一下,再由Spark访问Hive这个表谢谢,我没有用过Hive。
    上面是用的Hbase-Spark.jar第三方依赖jar包,实在解决不了了,我猜测是版本兼容的问题,所以放弃了这种方法。
    后来我试了试先将Hbase表读成RDD,然后用官网上说的,以编程的方式指定 Schema,将RDD转化为DataFrame的方式,就没有问题了。
    虽然代码复杂了不少,灵活性也很差,但是暂时这能用这种办法了。
    建议还是用Hive作为HDFS系的统一结构化门面。我们这边通过hive访问hbase外表是没有问题的,spark再去访问也没问题