栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

Spark综合学习笔记(二十九)SparkSQL分布式SQL引擎

Spark综合学习笔记(二十九)SparkSQL分布式SQL引擎

学习致谢

https://www.bilibili.com/video/BV1Xz4y1m7cv?p=66

说明

Hive的SQL交互方式
方式1∶交互式命令行(CLI)
· bin/hive,编写SQL语句及DDL语句
方式2: 启动服务HiveServer2 (Hive ThriftServer2)
·将Hive当做一个服务启动(类似MySQL数据库,启动一个服务),端口为10000
·交互式命令行,bin/beeline,CDH 版本HIVE建议使用此种方式,CLI方式过时
· 2JDBC/ODBC方式,类似MySQL中JDBC/ODBC方式
同样的SparkSQL也支持这样的访问方式
1.SparkSQL的命令行
2.在某一台机器启动SparkSQL的ThriftServer,然后可以在其他机器使用beeline访问

使用beeline客户端连接

0.hive的元数据库服务metastore保持启动状态 --node2

nohup./export/server/hive/bin/hive --service metastore &

1.启动SparkSQL的ThriftServer----类似于HiveServer------node2启动

/export/server/ spark /sbin/start-thriftserver.sh 
--hiveconf hive.server2.thrift.port=10000 
--hiveconf hive.server2.thrift. bind.host=node2 
--master loca1 [2]

http://node2:4040/jobs/

2.在其他机器使用beeline连接sparkSql的thirftService

/export/server/spark/bin/beeline
!connect jdbc:hive2://node2:10000
root
123456

3.执行sql

show databases;
show tables;
select * from person;

使用代码访问

0.导入依赖


org.apache.spark
spark-hive-thriftserver_2.12
$ispark.version}

1.使用jdbc代码访问SparkSQL-thirf

package sql

import java.sql.{DriverManager, PreparedStatement, ResultSet}



  object Demo10_ThirftServer{
  def main(args: Array[String]): Unit = {
    //0.加载驱动
    Class.forName("org.apache.hive.jdbc.HiveDriver")

    //1.获取连接
    val conn = DriverManager.getConnection(
      "jdbc:hive://node2:10000/default", //看上去像是在使用Hive的server2,本质上使用Spark的ThrifServer
      "root",
      "123456"
    )
    //2.编写sql
    val sql =
      """select id,name,age from person"""
    //3.获取预编译语句对象
    val ps: PreparedStatement = conn.prepareStatement(sql)
    //4.执行sql
    val rs: ResultSet = ps.executeQuery()
    //5.获取结果
    while (rs.next()){
    val id: Int = rs.getInt("id")
    val name: String = rs.getString("name")
    val age: Int = rs.getInt("age")
    println(s"id=${id},name=${name},age=${age}")
  }
    //6.关闭资源
    if (conn!=null)conn.close()
    if (ps!=null)ps.close()
    if (rs!=null)rs.close()
  }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/633001.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号