spark 您所在的位置:网站首页 jar包使用外部数据源的命令 spark

spark

2024-05-28 12:12| 来源: 网络整理| 查看: 265

spark-之访问Hive数据源(外部、内部Hive、thrift server)

spark本身就使用的是Hive的Catalog作为内部shema的标准,如果在类路径下访问不到Hive的conf文件,那么就会在本地生成Hive相关的元数据、数据目录,这些内容被称为Spark的内置hive,通常我们需要连接的数据源是外部hive.

由于不管是哪种模式,就算是最简单的local模式,我们也可以连接hive数据源进行相关操作,以下操作都是基于local模式,当然你可以使用standalone和yarn进行操作也是okay的。

1 访问内部hive 啥也不用做,解压之后进入spark-home目录。执行bin/spark-sql或者bin/spark-shell,进入交互式命令行之后,使用SQL进行查询:spark.sql("show tables").show然后尝试创建表,插入数据.然后在退出客户端,进入spark-home的目录下,你就会发现生成了derby.log,spark-warehouse目录,以及metadata_db目录,这就是内部hive的目录结构.此时进入spark-warehouse目录,你就会发现自己刚才创建的表以及表中数据. 2 访问外部Hive 将hive/conf/hive-site.xml 拷贝到spark的conf目录下.将Hive元数据库MySQL的驱动jar包拷贝到spark的jars目录下,如果是Derby不需要拷贝.如果访问不到HDFS,将hdfs-site.xml,以及core-site.xml拷贝到spark的conf目录下.启动spark-sql,然后执行select * from tablename,你就会发现现在访问的是外部hive的数据. 3 通过代码连接外部Hive //1、配置maven依赖 :spark-hive、hive-exec、spark-core、spark-sql //2、将hive-site.xml放入项目类路径下 //3、添加mysql驱动依赖 :mysql-connector-java

NOTE:如果hive-site.xml在项目中的target目录下没有,那么我们需要手动将其拷贝到target目录下。

//1、首先引入依赖(包括hive exec和Mysql Driver),请看pom.xml文件 //2、开启enableHiveSupport()支持 //3、创建dataFrame,然后查询并在控制台输出 val conf = new SparkConf() .setMaster("local[*]") .setAppName("HiveSpark") .set("spark.sql.warehouse.dir","hdfs://shufang101:9000/user/hive/warehouse") .set("spark.sql.hive.metastore.version","1.2.2") val spark = SparkSession.builder() .enableHiveSupport() //开启hive支持 .config(conf) .getOrCreate() import spark.sql // import spark.implicits._ sql("show tables").show() 4 spark通过beeline客户端操作Hive

spark thrift server是基于hiveServer2实现的的一个Thrift组件,无缝兼容Hiverserver2,所以thrift server可以取代HiveServer2,它界面更加美观,shema的结构展示也排版很好,具体操作步骤如下

将hive-site.xml拷贝到spark-home/conf目录下元数据库MySQL驱动拷贝到对应的spark-home/jars目录下(使用原生derby不用操作)如果访问不到HDFS,将hdfs-site.xml和core-site.xml拷贝到spark-home/conf目录下启动Thrift Server sbin/start-thriftserver.sh 使用beeline客户端使用jdbc的方式去连接thriftserver(hiveserver2) [shufang@shufang101 sparklocal-2.1.1]$ bin/beeline -u jdbc:hive2://shufang101:10000 -n shufang -d com.mysql.cj.jdbc.Driver >>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>> Connecting to jdbc:hive2://shufang101:10000 log4j:WARN No appenders could be found for logger (org.apache.hive.jdbc.Utils). log4j:WARN Please initialize the log4j system properly. log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info. Connected to: Spark SQL (version 2.1.1) Driver: Hive JDBC (version 1.2.1.spark2) Transaction isolation: TRANSACTION_REPEATABLE_READ Beeline version 1.2.1.spark2 by Apache Hive 0: jdbc:hive2://shufang101:10000> show tables; +-----------+------------+--------------+--+ | database | tableName | isTemporary | +-----------+------------+--------------+--+ | default | emps | false | +-----------+------------+--------------+--+ 1 row selected (0.426 seconds) 0: jdbc:hive2://shufang101:10000> select * from emps; +-------+-----------+--+ | id | name | +-------+-----------+--+ | 1001 | superman | | 1002 | biteman | | 1003 | thisman | +-------+-----------+--+ 3 rows selected (4.167 seconds) # 此时就连接成功了,让然我们可以设置日志级别为ERROR,显示更少的日志


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有