开发者社区> 问答> 正文

SparkSQL读写HiveOnHBase表

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

展开
收起
寒沙牧 2018-09-04 15:58:18 3684 0
2 条回答
写回答
取消 提交回答
  • 擅长互联网移动开发。。。

    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

    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

    2019-07-17 23:03:34
    赞同 1 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Experiences Migrating Hive Workload to SparkSQL 立即下载
Cassandra and SparkSQL 立即下载
SparkSQL在ETL中的应用 立即下载