本地搭建Zeppelin、Spark环境并连接MySQL读取数据
花了半天时间在本地搭建好了Zeppelin、Spark环境,最终在连接MySQL读取数据的时候踩了许多坑,所以有必要整理记录下。
Spark安装就不细说了,使用brew install apache-spark
,安装过程没什么问题。
Zeppelin下载页面是一个0.9.0
的预发版本,不要下载这个版本,下拉选择0.8.1
或0.8.2
Old releases。Zeppelin下载完成直接解压就可以使用。
进入bin目录执行./zeppelin-daemon.sh start
,Zeppelin就启动了。浏览器访问http://localhost:8080
打开页面。
接下来说一下Zeppelin配置jdbc driver连接MySQL的问题。首先,新建一个interpreters,Interpreter group选择jdbc。0.9.0
的预发版本没有jdbc这个Interpreter group,所以才在下载的时候选了旧版本。
按照官方文档示例的配置,其实是有问题的,MySQL jar包一定要选择匹配的版本,mysql-connector-java-5.1.38.jar
下载这个即可。最终在配置Dependencies
的时候,并不是如官方文档所示,添加mysql:mysql-connector-java:5.1.38
至少我是没连接成功。这里要填写你的MySQL jar包所在路径才行,如/usr/local/zeppelin/interpreter/mysql/mysql-connector-java-5.1.38.jar
配置完成,就可以在Zeppelin里写SQL了。
最后就是Spark连接MySQL读取数据了,因为我想要做的仅仅是从MySQL取点数据出来练习分析一下。前面已经配置可以成功连接MySQL,以为大功告成,事实证明不要以为你以为的就是你以为的。我以为已经配置好了连接MySQL,但是运行代码还是提示找不到连接MySQL的驱动,开始以为是代码问题,找网上找了不下十种连接方式,无一成功的。后来才意识到,之前配置的只是Zeppelin连接MySQL,跟Spark没有半毛钱关系,所以还要把MySQL jar包拷贝到/usr/local/Cellar/apache-spark/2.4.5/libexec/jars
这个目录下。
可以看到如下效果。