作者:黑暗行动

一、SparkSQL访问Hive源

软件环境

hadoop2.7.6

spark-2.3.0

scala-2.11.12

hive-2.1.1

SparkSQL命令行模式可以直接连接Hive的

将hive目录中的 D:\Soft\apache-hive-2.1.1-bin\conf\hive-site.xml 文件拷贝贝到 D:\Soft\spark\conf spark目录中

D:\soft\spark\jars 目录中放 mysql-connector-java-5.1.30.jar 包

Java程序SparkSQL连接Hive

1)将hive目录中的 D:\Soft\apache-hive-2.1.1-bin\conf\hive-site.xml 文件拷贝到 \src\main\resources 资源目录中

2)添加依赖

 <dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-hive_2.11</artifactId>
<version>2.3.1</version>
<scope>provided</scope>
</dependency> <dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.30</version>
</dependency>

3) 创建SparkSession

 /**
* SparkSession
* 支持数据源:hive
* @return
*/
public static SparkSession getSparkSessionForHive() {
return SparkSession
.builder()
.appName("SparkSQLForHive")
.master("local[*]")
.enableHiveSupport()
.getOrCreate();
}
  1. 测试代码
 public static void main(String[] args) {
SparkSession spark = SparkUtil.getSparkSessionForHive();
spark.sql("show tables").show();
spark.sql("select * from test1").show();
}
  1. 运行结果
18/11/18 22:36:44 INFO CodeGenerator: Code generated in 234.231366 ms
18/11/18 22:36:44 INFO CodeGenerator: Code generated in 11.285122 ms
+--------+--------------+-----------+
|database| tableName|isTemporary|
+--------+--------------+-----------+
| default|bucket_persion| false|
| default| bucket_temp| false|
| default| hdfs1| false|
| default| hdfs2| false|
| default| pt1| false|
| default| tbcsv1| false|
| default| tbcsv2| false|
| default| test1| false|
| default| test_table_2| false|
+--------+--------------+-----------+ ......... 18/11/18 22:36:46 INFO Executor: Finished task 0.0 in stage 0.0 (TID 0). 1346 bytes result sent to driver
18/11/18 22:36:46 INFO TaskSetManager: Finished task 0.0 in stage 0.0 (TID 0) in 237 ms on localhost (executor driver) (1/1)
18/11/18 22:36:46 INFO TaskSchedulerImpl: Removed TaskSet 0.0, whose tasks have all completed, from pool
18/11/18 22:36:46 INFO DAGScheduler: ResultStage 0 (show at redHive.java:14) finished in 0.313 s
18/11/18 22:36:46 INFO DAGScheduler: Job 0 finished: show at redHive.java:14, took 0.352593 s
+-------+---+-------+------+
| name|age|address|school|
+-------+---+-------+------+
| chy| 1| 芜湖| 示范|
| zjj| 2| 南京| 南开|
|gaoxing| 3| 马鞍山| 安工大|
+-------+---+-------+------+ 18/11/18 22:36:46 INFO SparkContext: Invoking stop() from shutdown hook

二、SparkSQL访问MySql源

Spark环境

spark-2.3.0

添加依赖

<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-sql_2.11</artifactId>
<version>2.3.0</version>
</dependency> <dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.22</version>
</dependency>

创建SparkSession

/**
* SparkSession
* 支持数据源:textFile,load,csv,json,text,format,jdbc
* @return
*/
public static SparkSession getSparkSession() {
return SparkSession
.builder()
.appName("SparkSQL")
.master("local[*]")
.getOrCreate();
}

访问Mysql方式1:

public static void test(){
String url="jdbc:mysql://localhost:3306/sparksql?user=root&password=123456";
String tableName="users";
SparkSession spark= SparkUtil.getSparkSession();
Map<String,String> map=new HashMap<>();
map.put("driver","com.mysql.jdbc.Driver");
map.put("url",url);
map.put("dbtable",tableName);
map.put("fetchSize","100"); //读取users信息
Dataset<Row> jdbcDF = spark.read()
.format("jdbc")
.options(map)
.load(); //读取users信息,保存到users_copy表
jdbcDF.write()
.format("jdbc")
.option("url", url)
.option("dbtable", "users_copy")
.save(); }

访问Mysql方式2:

public static void test2(){
String url="jdbc:mysql://localhost:3306/sparksql";
String tempTableName=" (select id,name from users) as u";
SparkSession spark= SparkUtil.getSparkSession();
Properties connectionProperties = new Properties();
connectionProperties.put("user", "root");
connectionProperties.put("password", "123456");
connectionProperties.put("isolationLevel","REPEATABLE_READ");
//读取users信息
Dataset<Row> jdbcDF2 = spark.read()
.jdbc(url, tempTableName, connectionProperties);
//读取users信息,保存到users1表
jdbcDF2.write()
.jdbc(url, "users1", connectionProperties); }

SparkSQL访问Hive源,MySQL源的更多相关文章

  1. spark on yarn模式下配置spark-sql访问hive元数据

    spark on yarn模式下配置spark-sql访问hive元数据 目的:在spark on yarn模式下,执行spark-sql访问hive的元数据.并对比一下spark-sql 和hive ...

  2. spark-sql访问hive的问题记录

    好久没有弄博客了... hive0.14 spark0.12 [hadoop@irs bin]$ ./spark-sql Spark assembly has been built with Hive ...

  3. SparkSQL On Yarn with Hive,操作和访问Hive表

    转载自:http://lxw1234.com/archives/2015/08/466.htm 本文将介绍以yarn-cluster模式运行SparkSQL应用程序,访问和操作Hive中的表,这个和在 ...

  4. MySQL源码分析以及目录结构 2

    原文地址:MySQL源码分析以及目录结构作者:jacky民工 主要模块及数据流经过多年的发展,mysql的主要模块已经稳定,基本不会有大的修改.本文将对MySQL的整体架构及重要目录进行讲述. 源码结 ...

  5. MySQL源码分析以及目录结构

    原文地址:MySQL源码分析以及目录结构作者:jacky民工 主要模块及数据流经过多年的发展,mysql的主要模块已经稳定,基本不会有大的修改.本文将对MySQL的整体架构及重要目录进行讲述. 源码结 ...

  6. mysql源码编译安装

    首先去官网http://dev.mysql.com/downloads/mysql/ 下载mysql源码.我下的是5.7.10 源码选择的是 Generic Linux (Architecture I ...

  7. MySQL源码解析之执行计划

    MySQL源码解析之执行计划 MySQL执行计划介绍 MySQL执行计划代码概览 MySQL执行计划总结 一.MySQL执行计划介绍 在MySQL中,执行计划的实现是基于JOIN和QEP_TAB这两个 ...

  8. mysql源码解读之配置文件

    要研究mysql,最好的资源莫过于源码了,所以本人打算通过调试源码的方式来深入理解mysql的点点滴滴.搭建mysql调试环境很简单,从官方下载mysql源码,利用cmake工具生成工程即可.为了方便 ...

  9. Mysql源码分析--csv存储引擎

    一直想分析下mysql的源码,开始的时候不知道从哪下手,先从csv的文件存储开始吧,这个还是比较简单的.我是用的是mysql5.7.16版本的源码. csv源码文件在mysql源码的mysql-5.7 ...

随机推荐

  1. Media Queries媒体查询

    Media Queries能在不同的条件下使用不同的样式,使页面在不同在终端设备下达到不同的页面效果.Media Queries有其自己的使用规则.一个媒体查询由一个可选的媒体类型和媒体特性表达式,使 ...

  2. UDP 通讯方式

    1.创建套接字:2.绑定端口:3.收发数据: 收到的数据中包含发送方的端口信息4.关闭套接字:

  3. 关于try catch块执行流程

    代码: package test; public class FinallyTest { public static void main(String[] args) { try { // proce ...

  4. redis基础-Remote Dictionary Server

    Redis支持多个数据库,并且每个数据库的数据是隔离的不能共享,并且基于单机才有,如果是集群就没有数据库的概念. Redis默认支持16个数据库(可以通过配置文件支持更多,无上限),可以通过配置dat ...

  5. chatsRoom Design Report

    基于TCP实现聊天室 主要使用四个类 ChatClient类     使用BufferedReader 得到输入流,使用OutputStream得到输出流     实现读取服务器广播的消息和发送消息到 ...

  6. 用python+sklearn(机器学习)实现天气预报 准备

    用python+sklearn机器学习实现天气预报 准备 项目地址 系列教程 0.流程介绍 1. 环境搭建 a.python b.涉及到的机器学习相关库 sklearn panda seaborn j ...

  7. 浅谈.NET技术公司的实习生培养

    浅谈.NET技术公司的实习生培养 背景 近几年.NET开发者市场的越发不景气,一毕业就选择.NET技术的开发者更是少之又少.一方面是公司效益的日益提高,一方面却是招聘优秀人才的速度总是赶不上公司发展的 ...

  8. 关于.NET中的控制反转(一)- 概念与定义

    一.控制反转 1:类与类的依赖 依赖是面向对象中用来描述类与类之间一种关系的概念.两个相对独立的对象,当一个对象负责构造另一个对象的实例,或者依赖另一个对象的服务,这样的两个对象之间主要体现为依赖关系 ...

  9. Eplan P8 2.7 加密狗 感叹号 解决方法

    Eplan安装完加密狗后一直感叹号异常,最近也是查了很多办法,最后发现是少了个驱动的原因. 就是上面这个驱动,这里放上驱动链接:https://lanzous.com/id5gi8f ,或者随便找一个 ...

  10. Laya 踩坑日记-人物模型穿模,模型显示不正常

    最近做游戏,人物要跑到很远的位置,z轴距离大概有20000个单位,然后就发现一个bug,到远处人物模型穿了,而且没办法改,这就尴尬了 Z轴对应值    0    100000 100000 当距离零点 ...