• Spark访问与HBase关联的Hive表


    知识点1:创建关联Hbase的Hive表

    知识点2:Spark访问Hive

    知识点3:Spark访问与Hbase关联的Hive表

    知识点1:创建关联Hbase的Hive表

    两种方式创建,内部表和外部表

    内部表,如果删除hive表,hbase表也会删除;不建议使用这种方式,大多数都是关联进行查询操作

    外部表,如果删除hive表,hbase表不受影响;

    hive使用的还是存储在hbase中的数据。

    这里创建外部表。

    CREATE EXTERNAL TABLE tdatafromhbase(key string, id string, info map<STRING,STRING> )
    STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
    WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key, cf1:id, cf2:")
    TBLPROPERTIES("hbase.table.name" = "userinfo");

    Hbase中的表名为userinfo;

    Hive中的表名为tdatafromhbase,字段为key, id, info<>;

    由于在使用hbase的时候列名会很多且未知,这里使用了map数据类型存储列族cf2的内容。针对已知的列名可以直接指定,这里id就是列族cf1的字段id;

    知识点2:spark访问hive

    import org.apache.spark.sql.hive.HiveContext
    import org.apache.spark.{SparkContext, SparkConf}
    
    /**
      * Created by Edward on 2017/9/19.
      */
    object HiveSql {
      def main(args: Array[String]) {
    
        val conf = new SparkConf().setAppName("sql-hive")
        val sc =new SparkContext(conf)
    
        val hiveContext = new HiveContext(sc)
    
        hiveContext.sql("select key, id, info from tdatafromhbase").collect().foreach(println)
    
        sc.stop()
    
      }
    }

    知识点3:Spark访问与Hbase关联的Hive表

    直接调用hive没什么差别,需要注意的就是,需要引用jar包,不然会报错

    2017-10-03 01:55:36,817 ERROR [main] hive.log: error in initSerDe: java.lang.ClassNotFoundException Class org.apache.hadoop.hive.hbase.HBaseSerDe not found
    java.lang.ClassNotFoundException: Class org.apache.hadoop.hive.hbase.HBaseSerDe not found

    在spark-submit的时候添加参数,使用hive的库hive-hbase-handler-1.1.0-cdh5.10.0.jar

    --jars /home/hadoop/app/hive-1.1.0-cdh5.10.0/lib/hive-hbase-handler-1.1.0-cdh5.10.0.jar

    应用场景,spark操作hive,当然spark也可以直接操作hbase, 这里使用spark通过hive访问hbase,有点绕。

    根据自己的实际需求,和性能要求进行调整。

  • 相关阅读:
    【NOIP2016提高A组模拟8.19】(雅礼联考day2)公约数
    【NOIP2016提高A组模拟8.19】(雅礼联考day2)树上路径
    【NOIP2012模拟10.31】掷骰子
    【NOIP2016提高A组模拟8.17】(雅礼联考day1)总结
    【初中部 NOIP提高组 二试】模拟赛B总结
    【NOIP2012模拟11.1】塔(加强)
    【NOIP2016提高A组模拟8.17】(雅礼联考day1)Binary
    【NOIP2016提高A组模拟8.17】(雅礼联考day1)Value
    【NOIP2016提高A组模拟8.17】(雅礼联考day1)Matrix
    【NOIP2016提高A组模拟8.15】Garden
  • 原文地址:https://www.cnblogs.com/one--way/p/7623690.html
Copyright © 2020-2023  润新知