Hive 与 SparkSQL 整合

配置文件的整合

  • 集群中已安装hive的情况

$HIVE_HOME/conf下的hive-site.xml拷贝到$SPARK_HOME/conf中,即可

  • 集群中未安装hive的情况

$SPARK_HOME/conf创建一个hive-site.xml,再对xml文件配置一下可以访问的metadata即可

对应metadata的数据库驱动

  • 将对应数据库的驱动放于$SPARK_HOME/jars目录下,这样Spark在启动的时候会去自动加载
  • 在启动Spark时通过 -jars去指定数据库驱动

推荐第一种做法

通过spark-shell来访问

  • 启动spark-shell

      spark/bin/spark-shell
      
      Spark context Web UI available at http://127.0.0.1:4040
      Spark context available as 'sc' (master = local[*], app id = local-1533734039679).
      Spark session available as 'spark'.
    
  • 通过sparksession访问hive

我们先看看是否能hive中已存在的表

scala> spark.sql("show tables").show()
+--------+------------+-----------+
|database|   tableName|isTemporary|
+--------+------------+-----------+
| default| lj_sz_crawl|      false|
| default|  lj_sz_deal|      false|
| default|lj_sz_number|      false|
+--------+------------+-----------+

从显示的结果可以看出hive中的表是可以看的,我们再查看表中的数据

scala> spark.sql("select * from lj_sz_crawl limit 3").show()
+--------------------+--------------------+-----+-------+--------+--------+----+------+
|               title|              descri|price|acreage|position|    type|high|direct|
+--------------------+--------------------+-----+-------+--------+--------+----+------+
|近地铁精装,疲惫身心的补给源泉,宜...|南向正规2房 客厅出阳台 交通便利...| 7000|  76.67|     福田区|2室2厅1卫  |   高|     北|
|佳兆业前海广场一期 2室1厅 6500元|      这个经纪人很懒,没写核心卖点| 6500|     77|     南山区|2室1厅1卫  |   高|    东南|
|京基东方华都 精装修 采光通风好 ...|正规一房一厅,房子精装修,干净整洁...| 4800|  41.82|     罗湖区|1室1厅1卫  |   高|  东南 南|
+--------------------+--------------------+-----+-------+--------+--------+----+------+

数据也是可以查询得到

在scala文件中访问hive

val spark = SparkSession
            .builder()
            .appName("Rating Data")
            .enableHiveSupport()
            .getOrCreate()

从spark2.0开始,出现的sparksession来代替sparkcontext,整合了hiveContextsqlContext,我们只需要在创建SparkSession的时候调用enableHiveSupport方法即可在我们的程序中访问hive

posted @ 2018-08-10 23:49  oldsix666  阅读(647)  评论(0编辑  收藏  举报