在做下图的实验发现docker中的mysql和spark要建立连接需要 MySQL JDBC 驱动程序,所以出一个我的处理过程,供大伙参考。
首先要把两个docker镜像装好,下面是两个常用的:
然后就可以开始搭建环境了:
打开主机的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下载:
选择Platform Independent:
下载tar.gz然后解压,把jar包提取出来,
然后随便放在哪个路径里,最好不要有中文路径,然后运行这行代码:
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://www.toymoban.com/news/detail-784060.html文章来源:https://www.toymoban.com/news/detail-784060.html
到了这里,关于docker中对Spark 应用中配置 MySQL 连接的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!