SparkSQL访问Hive源,MySQL源
SparkSQL访问Hive源,MySQL源
作者:黑暗行动
一、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();
}
- 测试代码
public static void main(String[] args) {
SparkSession spark = SparkUtil.getSparkSessionForHive();
spark.sql("show tables").show();
spark.sql("select * from test1").show();
}
- 运行结果
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源的更多相关文章
- spark on yarn模式下配置spark-sql访问hive元数据
spark on yarn模式下配置spark-sql访问hive元数据 目的:在spark on yarn模式下,执行spark-sql访问hive的元数据.并对比一下spark-sql 和hive ...
- spark-sql访问hive的问题记录
好久没有弄博客了... hive0.14 spark0.12 [hadoop@irs bin]$ ./spark-sql Spark assembly has been built with Hive ...
- SparkSQL On Yarn with Hive,操作和访问Hive表
转载自:http://lxw1234.com/archives/2015/08/466.htm 本文将介绍以yarn-cluster模式运行SparkSQL应用程序,访问和操作Hive中的表,这个和在 ...
- MySQL源码分析以及目录结构 2
原文地址:MySQL源码分析以及目录结构作者:jacky民工 主要模块及数据流经过多年的发展,mysql的主要模块已经稳定,基本不会有大的修改.本文将对MySQL的整体架构及重要目录进行讲述. 源码结 ...
- MySQL源码分析以及目录结构
原文地址:MySQL源码分析以及目录结构作者:jacky民工 主要模块及数据流经过多年的发展,mysql的主要模块已经稳定,基本不会有大的修改.本文将对MySQL的整体架构及重要目录进行讲述. 源码结 ...
- mysql源码编译安装
首先去官网http://dev.mysql.com/downloads/mysql/ 下载mysql源码.我下的是5.7.10 源码选择的是 Generic Linux (Architecture I ...
- MySQL源码解析之执行计划
MySQL源码解析之执行计划 MySQL执行计划介绍 MySQL执行计划代码概览 MySQL执行计划总结 一.MySQL执行计划介绍 在MySQL中,执行计划的实现是基于JOIN和QEP_TAB这两个 ...
- mysql源码解读之配置文件
要研究mysql,最好的资源莫过于源码了,所以本人打算通过调试源码的方式来深入理解mysql的点点滴滴.搭建mysql调试环境很简单,从官方下载mysql源码,利用cmake工具生成工程即可.为了方便 ...
- Mysql源码分析--csv存储引擎
一直想分析下mysql的源码,开始的时候不知道从哪下手,先从csv的文件存储开始吧,这个还是比较简单的.我是用的是mysql5.7.16版本的源码. csv源码文件在mysql源码的mysql-5.7 ...
随机推荐
- java类的主动使用/被动使用
对类的使用方式分为:主动使用.被动使用 所有的java虚拟机实现必须在每个类或接口被java程序"首次主动使用"时才初始化他们 ps:被动使用不会初始化类,但是有可能会加载类(JV ...
- cornerstoneTools 作用,用法,api使用心得
一.cornerstoneTools的用途 1.作用可以响应一些事件,例如鼠标按下的事件,鼠标滚轮的事件或按键或触摸事件 2.可以对视口进行缩放平移 3.可以在图像上绘制图形 4.可以在图像上绘制文本 ...
- 建立索引和创建视图(结合YGGL.sql)
一.请按要求对YGGL库建立相关索引 (1)使用create index 语句创建索引 1.对employees表中的员工部门号创建普通索引depart_ind. mysql> create i ...
- Docker-Compose练习
运行一个镜像,需要添加大量的参数. 可以通过Docker-Compose编写这些参数. Docker-Compose可以帮助我们批量的管理容器. 只需要通过一个docker-compose.yml文件 ...
- 查找linux系统下的端口被占用进程的两种方法 【转】
在linux下开发时,你的软件可能要使用某一个端口,或者想查找某一个端口是否被占用.需要怎么做呢??这的确是一个比较烦恼的问题,我也此为这个苦恼过.但是通过查找man手册,还是同事的交流.总结出来两种 ...
- Flink SQL结合Kafka、Elasticsearch、Kibana实时分析电商用户行为
body { margin: 0 auto; font: 13px / 1 Helvetica, Arial, sans-serif; color: rgba(68, 68, 68, 1); padd ...
- Java 用java GUI写一个贪吃蛇小游戏
目录 主要用到 swing 包下的一些类 上代码 游戏启动类 游戏数据类 游戏面板类 代码地址 主要用到 swing 包下的一些类 JFrame 窗口类 JPanel 面板类 KeyListener ...
- 【UML】基本介绍与类图(依赖、泛化、实现、关联、聚合、组合关系)
文章目录 UML基本介绍 UML图 UML类图 类图-依赖关系(Dependence) 类图-泛化关系(generalization) 类图-实现关系(Implementation) 类图-关联关系( ...
- 【Linux】snmp在message中报错: /etc/snmp/snmpd.conf: line 311: Error: ERROR: This output format has been de
Apr 17 17:36:17 localhost snmpd[2810]: /etc/snmp/snmpd.conf: line 311: Error: ERROR: This output for ...
- 【Oracle】translate函数用法解析
转自:https://blog.csdn.net/shwanglp/article/details/52814173 基本语法: translate(string,from_str,to_str); ...