Spark SQL 操作Hive(七)

1. Spark SQL的功能

  • Spark SQL可操作Hive、HBase、MySQL、Oracle、DB2等中的数据
  • 提升了数据仓库的计算能力和计算复杂度
  • 基于Spark SQL推出的DataFrame可实现数据仓库直接使用机器学习、图计算等复杂算法库深度数据挖掘数据仓库
  • Spark SQL是数据仓库、数据挖掘及其科学计算和分析引擎工具

2. 配置与启动

2.1 添加配置文件

vi apache-hive-1.2.2-bin/conf/hive-site.xml
首先找到配置项
/hive.metastore.uris 回车

 <property>
    <name>hive.metastore.uris</name>
    <value>thrift://master001:9083</value>
    <description>Thrift URI for the remote metastore. Used by metastore client to connect to remote metastore.</description>
  </property>

上述thrift协议的uri指向Hive服务端(Hive的安装节点),将配置文件拷贝到spark/conf目录下:

scp hive-site.xml ~/software/spark-2.3.3-bin-hadoop2.6/conf/

2.2 启动MySQL服务

service mysqld start

2.3 启动Hive元数据服务

nohup hive --service metastore &>metasotre.log &

在这里插入图片描述

2.4 启动Hadoop和Spark集群

cd /home/hadoop/software/hadoop-2.6.5/sbin
start-dfs.sh
cd /home/hadoop/software/spark-2.3.3-bin-hadoop2.6/sbin
./start-all.sh

3. 测试

3.1 启动Spark-Shell

./spark-shell --master spark://master001:7077

在这里插入图片描述

3.2 创建HiveContext对象

val hiveContext = new org.apache.spark.sql.hive.HiveContext(sc)

3.3 显示Hive库中的所有表

hiveContext.sql("show tables").collect.foreach(println)

在这里插入图片描述

3.4操作Hive中的表

hiveContext.table("person").show()

在这里插入图片描述

hiveContext.sql("select count(*) from person").collect.foreach(println)

在这里插入图片描述

hiveContext.sql("select count(*) from person where age>22").collect.foreach(println)

在这里插入图片描述

hiveContext.sql("select count(*) from person where age>22 and name like '%dh%'").collect.foreach(println)

在这里插入图片描述

扫描二维码关注公众号,回复: 11507828 查看本文章

4. 小注

Spark SQL和SparkStreaming均基于SparkCore内核完成RDD计算
SQLContext是HiveContext的超接口,HiveContext是SQLContext接口的Hive实现(即底层的数据仓库可使用非Hive的其他存储来实现)

猜你喜欢

转载自blog.csdn.net/RivenDong/article/details/107325769