背景知识
Jupyter Notebook是一个开源的Web应用程序,可以让用户在线创建和共享代码。由于它支持集成Spark以及支持Scala等多种语言,因此我们同样可以集成SuperMap iObjects Java 9D for Spark(Beta)开发空间大数据分析程序。
如何制作镜像
l第一步:开发镜像
上一期已经介绍过基于Dockfile制作镜像的方法,这里就直接给出Dockerfile的具体内容。我们选择jupyter/all-spark-notebook官方镜像作为基础镜像并且它自带了Spark
2.1。另外,由于基础镜像使用的是latest版本,所以建议大家使用时再确认下届时的版本是否与同时期的SuperMap iObjects Java for Spark兼容。
FROMjupyter/all-spark-notebook:latest
USER$NB_USER
ENV SUPERMAP_HOME=/home/iobjects
ENV LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${SUPERMAP_HOME}/bin
ENV
SPARK_CLASSPATH=$SPARK_CLASSPATH:${SUPERMAP_HOME}/bin/com.supermap.bsp.core-9.0.0.jar:${SUPERMAP_HOME}/bin/com.supermap.bsp.examples-9.0.0.jar
User root
RUN mkdir/home/iobjects
ADD ./Bin
/home/iobjects/bin
USER$NB_USER
l第二步:构建镜像
Dockerfile保存之后,在其同级文件目录拷贝放置iObjects for Java提供的Bin文件目录。同时为了部署简单,我们已经将com.supermap.bsp.core-9.0.0.jar、com.supermap.bsp.examples-9.0.0.jar两个SuperMap
iObjects Java 9D for Spark(Beta)的库文件事先也放置在了Bin目录下。
文件目录准备完毕之后就可以执行以下命令来构建镜像了。
dockerbuild -t jupyter/iobjects-for-spark:v1
l第三步:启动镜像
启动镜像需要设置一些基础镜像所要求的参数。它们的具体含义可以直接参考官方文档https://hub.docker.com/r/jupyter/all-spark-notebook/上相关说明,这里不一一解释了。
dockerrun -d --rm --net=host --pid=host -p 8888:8888 -e TINI_SUBREAPER=true jupyter/iobjects-for-spark:v1 start-notebook.sh --NotebookApp.token=''
开发测试
经过以上的步骤,镜像已经启动并且可以开始使用Jupyter Notebook了。我们访问地址http://[ip]:8888就可以打开Jupyter
Notebook的默认界面。
l第一步:创建Notebook
在初始页面上,我们在右边New菜单中点击“Apache
Toree-Scala”创建一个scala notebook。文件名设置为Summary Mesh。
l第二步:编写代码
这里我们实现一个和iObjects for
Spark提供的示范程序“SummaryMeshTest.scala”一样的功能代码,并略作简化调整。程序实现的逻辑是将hdfs上的taxi.json数据文件读取之后,进行网格对象的记录数统计,并将最后统计的结果保存在SummaryMesh.json文件中。
l第二步:运行程序查看结果
顺序执行Notebook中的每个Cell中的程序。如果程序正常执行且没有异常信息,就可以在Summary Mesh.ipynb文件的同级目录出现分析的结果数据文件。同时可以证明,部署在Docker镜像中的Jupyter Notebook已经可以正常引用到SuperMap iObjects Java for Spark的接口了。那么到此为止,本次介绍的内容已经全部实现。今后大家就可以基于这个镜像方便的进行部署和分发。同时可以使用SuperMap iObjects Java 9D for Spark所提供的丰富的接口,开发出灵活多样的空间大数据分析处理程序了。
注意事项
本次介绍的Jupyter Notebook默认是以local模式启动Spark的,并且自动初始化SparkContext对象为sc。今后会再单独分享如何将开发的程序提交到Spark集群中的方法。
小结
在未来的空间大数据分析的应用开发过程中,大家既可以通过SuperMap iDesktop Cross直接调用SuperMap iServer提供的空间处理服务来使用定义好的多种分析功能。也可以根据业务的需要自己开发空间大数据分析挖掘的程序,实现更加个性化的业务逻辑。如果希望将开发的程序与大家分享,那么Jupyter Notebook是一个不错的选择。当然,Docker技术的应用会让整体环境的部署和分发更加方便。
网友评论