spark sql保存数据到mysql

spark sql保存数据到mysql,第1张

一.读取mysql数据 

1.创建一个mysql数据库 

user_test表结构如下:

1 create table user_test (2 id int(11) default null comment "id",3 name varchar(64) default null comment "用户名",4 password varchar(64) default null comment "密码",5 age int(11) default null comment "年龄"6 )engine=InnoDB default charset=utf-8

2.插入数据

1 insert into user_test values(12, 'cassie', '123456', 25)2 insert into user_test values(11, 'zhangs', '1234562', 26)3 insert into user_test values(23, 'zhangs', '2321312', 27)4 insert into user_test values(22, 'tom', 'asdfg', 28)

3.创建maven工程,命名为Test,添加java类SparkMysql

在已有的 MySQL 服务器之上使用 Apache Spark (无需将数据导出到 Spark 或者 Hadoop 平台上),这样至少可以提升 10 倍的查询性能。使用多个 MySQL 服务器(复制或者 Percona XtraDB Cluster)可以让我们在某些查询上得到额外的性能提升。你也可以使用 Spark 的缓存功能来缓存整个 MySQL 查询结果表。

思路很简单:Spark 可以通过 JDBC 读取 MySQL 上的数据,也可以执行 SQL 查询,因此我们可以直接连接到 MySQL 并执行查询。那么为什么速度会快呢?对一些需要运行很长时间的查询(如报表或者BI),由于 Spark 是一个大规模并行系统,因此查询会非常的快。MySQL 只能为每一个查询分配一个 CPU 核来处理,而 Spark 可以使用所有集群节点的所有核。在下面的例子中,我们会在 Spark 中执行 MySQL 查询,这个查询速度比直接在 MySQL 上执行速度要快 5 到 10 倍。

另外,Spark 可以增加“集群”级别的并行机制,在使用 MySQL 复制或者 Percona XtraDB Cluster 的情况下,Spark 可以把查询变成一组更小的查询(有点像使用了分区表时可以在每个分区都执行一个查询),然后在多个 Percona XtraDB Cluster 节点的多个从服务器上并行的执行这些小查询。最后它会使用map/reduce 方式将每个节点返回的结果聚合在一起形成完整的结果。

在运行spark程序的时,有时需要读取外部配置参数,比如mysql的host参数、端口号、es主机ip、es端口号等。通过外部文件配置参数也方便程序迁移。下面就来看看如何来实现。 1、首先我们需要一个配置文件: config.properties 2、上传配置文件到某个节点: 4、通过 Maven打包程序:test_CDH.jar 5、上传 test_CDH.jar 到集群 6、执行 submit 命令 spark2-submit --master yarn --deploy-mode cluster --files config.properties --jars libs/hbase-client-1.2.0.jar,libs/hbase-common-1.2.0.jar,libs/hbase-server-1.2.0.jar,libs/mysql-connector-java-8.0.15.jar --driver-class-path libs/mysql-connector-java-8.0.15.jar --conf spark.executor.userClassPathFirst=true --conf spark.driver.userClassPathFirst=true --class test_CDH.Main libs/test_CDH.jar $1--files 参数指定我们需要加载的外部配置文件


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5907109.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-07
下一篇 2023-03-07

发表评论

登录后才能评论

评论列表(0条)

保存