SparkSQL读写HiveOnHBase表-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

SparkSQL读写HiveOnHBase表

寒沙牧 2018-09-04 15:58:18 2111

E-MapReduce集群中的SparkSQL如何读写HiveOnHBase表

分享到
取消 提交回答
全部回答(2)
  • aoteman675
    2019-07-17 23:03:34

    1、spark把数据写入到hbase需要用到:PairRddFunctions的saveAsHadoopDataset方法,这里用到了 implicit conversion,需要我们引入
    import org.apache.spark.SparkContext._
    2、spark写入hbase,实质是借用了org.apache.hadoop.hbase.mapreduce.TableInputFormat这个对象,用其内部的recorderWriter将数据写入hbase
    同时,也借用了hadoop的JobConf,配置和写MR的配置方式一样
    3、请看下面代码,这里使用sparksql从hive里面读出数据,经过处理,写入到hbase

    0 0
  • 寒沙牧
    2019-07-17 23:03:34

    SparkSQL本身是支持StorageHandler,需要提供相关jar包。

    访问HiveOnHBase需要如下jar包:
    /usr/lib/hbase-current/lib/hbase-server-1.1.1.jar
    /usr/lib/hbase-current/lib/hbase-common-1.1.1.jar
    /usr/lib/hbase-current/lib/hbase-client-1.1.1.jar
    /usr/lib/hbase-current/lib/hbase-protocol-1.1.1.jar

    /usr/lib/hive-current/lib/hive-hbase-handler-2.3.3.jar

    需要将上述jar包添加到spark,有两种方式:
    a)通过--jars参数来添加
    如:spark-sql --jars /usr/lib/hbase-current/lib/hbase-server-1.1.1.jar,/usr/lib/hbase-current/lib/hbase-common-1.1.1.jar,/usr/lib/hbase-current/lib/hbase-client-1.1.1.jar,/usr/lib/hbase-current/lib/hbase-protocol-1.1.1.jar,/usr/lib/hive-current/lib/hive-hbase-handler-2.3.3.jar

    b)spark-defaults.conf里面配置
    spark.executor.extraClassPath /opt/apps/extra-jars/*:/usr/lib/hbase-current/lib/hbase-server-1.1.1.jar:/usr/lib/hive-current/lib/hive-hbase-handler-2.3.3.jar:/usr/lib/hbase-current/lib/hbase-common-1.1.1.jar:/usr/lib/hbase-current/lib/hbase-client-1.1.1.jar:/usr/lib/hbase-current/lib/hbase-protocol-1.1.1.jar

    spark.driver.extraClassPath /opt/apps/extra-jars/*:/usr/lib/hbase-current/lib/hbase-server-1.1.1.jar:/usr/lib/hive-current/lib/hive-hbase-handler-2.3.3.jar:/usr/lib/hbase-current/lib/hbase-common-1.1.1.jar:/usr/lib/hbase-current/lib/hbase-client-1.1.1.jar:/usr/lib/hbase-current/lib/hbase-protocol-1.1.1.jar

    备注:
    EMR-3.13.0以及以下版本,使用SparkSQL insert 数据到HiveOnHBase表的时候会出异常:
    java.lang.ClassCastException: org.apache.hadoop.hive.hbase.HiveHBaseTableOutputFormat cannot be cast to org.apache.hadoop.hive.ql.io.HiveOutputFormat

    1 0
添加回答
云计算
使用钉钉扫一扫加入圈子
+ 订阅

时时分享云计算技术内容,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。

推荐文章