花了半天时间在本地搭建好了Zeppelin、Spark环境,最终在连接MySQL读取数据的时候踩了许多坑,所以有必要整理记录下。

Spark安装就不细说了,使用brew install apache-spark,安装过程没什么问题。

Zeppelin下载页面是一个0.9.0的预发版本,不要下载这个版本,下拉选择0.8.10.8.2Old 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这个目录下。

可以看到如下效果。