构建Jupyter镜像开发空间大数据

作者: 天地玄黄一路向南 | 来源:发表于2017-08-07 14:27 被阅读75次

    背景知识

    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技术的应用会让整体环境的部署和分发更加方便。

    相关文章

      网友评论

        本文标题:构建Jupyter镜像开发空间大数据

        本文链接:https://www.haomeiwen.com/subject/avfalxtx.html