docker中对Spark 应用中配置 MySQL 连接

在做下图的实验发现docker中的mysql和spark要建立连接需要 MySQL JDBC 驱动程序,所以出一个我的处理过程,供大伙参考。

dddf7cf13da540d98c41b1d8a0a59308.png首先要把两个docker镜像装好,下面是两个常用的:

829c0dd93d2f41748c8679f148d17207.png

然后就可以开始搭建环境了:

打开主机的cmd终端,创建一个 docker网络:

docker network create spark-mysql-network

创建并启动MySQL容器(密码设置为password):

docker run –name mysql-container –network spark-mysql-network -e MYSQL_ROOT_PASSWORD=password -d mysql:tag

这里mysql-container随便设什么名字

创建并启动Spark容器:

docker run –name spark-container –network spark-mysql-network -d bitnami/spark:latest

这里spark-container随便设什么名字

将 MySQL 和 Spark 容器连接到这个网络(这一步检查有没有在两个容器有没有在网络里面):

docker network connect spark-mysql-network mysql-container

docker network connect spark-mysql-network spark-container

添加 JDBC 驱动:

docker cp mysql-connector-java-8.2.0.jar spark-container:/opt/bitnami/spark/jars

这里mysql-connector-java-8.2.0.jars是在MySQL :: Download Connector/J下载:

9a749a352ef34cd49fa4fdb0e5f48b9a.png

选择Platform Independent:

下载tar.gz然后解压,把jar包提取出来,

e02a84c84af34bf3a5d4755544e186e2.png

然后随便放在哪个路径里,最好不要有中文路径,然后运行这行代码:

docker cp mysql-connector-java-8.2.0.jar spark-container:/opt/bitnami/spark/jars

如果名字路径不对就把对应的名字或者路径设置一下,在mysql-connector-java-8.2.0.jar这个地方

然后启动spark-shell即可运行一个带有JDBC驱动的spark程序了

顺带一提,mysql的运行我也大致放出来:

docker exec -it mysql-container mysql -u root -p

然后输入密码,在 MySQL 提示符下,执行以下 SQL 命令:

CREATE DATABASE sparktest;

USE sparktest;

CREATE TABLE employee (id INT, name VARCHAR(50), gender CHAR(1), age INT);

INSERT INTO employee (id, name, gender, age) VALUES (1, ‘Alice’, ‘F’, 22), (2, ‘John’, ‘M’, 25);

其余的在spark-shell里面完成,解释一下我的做法:

JDBC URL – 使用 MySQL 容器的名称作为主机名

val jdbcUrl = “jdbc:mysql://mysql-container:3306/sparktest”

val connectionProperties = new java.util.Properties() 

connectionProperties.put(“user”, “root”) 

connectionProperties.put(“password”, “password”)

第一行代码的意思就是在 Scala 中定义了一个 JDBC URL,用于连接到 MySQL 数据库,3306是MySQL 的默认端口号。

 

 

本文来自网络,不代表协通编程立场,如若转载,请注明出处:https://net2asp.com/5e8af482a7.html