iObjects for Spark-時空大數據分析引擎

Spark的時空大數據分析引擎

Apache Spark是功能強大的分佈式並行計算平臺。iObject for Spark是全球首個面向Spark的時空大數據分析引擎,經過將專業GIS組件引入Spark環境中運行,極大擴充了Spark的能力,使其具有了專業級的空間數據處理、空間分析和專題製圖的功能,既方便了使用Spark的大數據分析專家,也爲專業GIS領域應用提供了強大的分佈式並行處理能力。html

1. 簡介

iObjects for Spark時空大數據分析引擎是SuperMap iObjects的Spark版本,直接將GIS的專業級功能帶到了Spark分佈式並行計算環境中。目前其它的一些方案,都只能在Spark中實現很是有限的空間數據處理功能,Spark的處理結果和專業GIS系統之間是分離的,兩者協同工做須要進行大量耗費時間和存儲空間的數據轉換工做,才能將結果用於GIS系統進行後續的查詢、製圖等處理,這類傳統GIS系統自己不支持並行計算,只是提交計算任務,更沒法將其用於流式數據處理。java

iObjects for Spark時空大數據分析引擎能夠幫助使用者進行高效的時空大數據分析,它既能夠做爲Apache Spark項目在時空數據領域的擴展模塊,爲軟件開發人員服務,也能夠做爲一個開箱即用的時空大數據分析工具包,爲數據分析人員服務。web

iObjects for Spark時空大數據分析引擎支持基於虛擬機或Docker的快速部署【參見:iObjects for Spark- Docker安裝攻略】,從而能夠在雲計算基礎設施中統一管理和按需運行。mongodb

2. 開發和測試環境(M1版本)

3. 項目特性

  • 數據格式:CSV,WKT,WKB,GeoJSON,...
  • 幾何對象類型:點,線,面,矩形,...
  • 空間斷定:包含,相交,覆蓋,穿越,接觸,相離,同一,共線,共點,平行,左右,...
  • 空間操做:裁剪,擦除,相交,合併,更新,同一,對稱差.
  • 空間運算:凸包,重採樣,光滑,空間距離,...
  • 空間索引:格網索引,四叉樹索引,R樹索引
  • 空間數據組織:要素(Feature),要素集合(FeatureSet)
  • 功能:構建索引(BuildIndex),生成緩存(BuildCache),範圍查詢(QueryIndex),核密度分析(KernelDensity)

4. 使用說明

4.1軟件開發人員

4.1.1 Maven方式

項目的每日構建版本(iobjects-spark-0.1.0.jar)會被髮布到[研發內網Maven庫]。項目後續版本趨於穩定後,會被髮布到超圖官方Maven庫,敬請關注哦!apache

所以,開發人員能夠經過添加pom文件依賴項的方式進行使用:ubuntu

<dependency>
    <groupId>com.supermap</groupId>
    <artifactId>com.supermap.spark</artifactId>
    <version>0.1.0</version>
</dependency>

4.1.2 包依賴方式

因爲咱們提供pom文件,你能夠在項目根目錄下直接使用Maven命令進行打包:緩存

mvn package

打包成功後,你能夠在target目錄下獲取 iobjects-spark-0.1.0.jar 將該包加入到你的項目依賴中,就能夠基於GISpark提供的相關API進行開發了oracle

4.2.數據分析人員

4.2.1 配置環境

  • Apache Hadoop 集羣部署請參考 Apache Hadoopless

  • Apache Spark 集羣部署請參考 Apache Sparkmaven

  • SuperMap iObjects Java 安裝請參考 SuperMap iObjects

  • 配置 Apache Spark 集羣

    在安裝完 SuperMap iObjects Java 組件後,須要將 SuperMap iObjects Java 組件的 Bin 目錄路徑設置到 spark-env.hLD_LIBRARY_PATH 中:

    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${SUPERMAP_HOME}/Bin

    同時,咱們須要設置 iobjects-spark-0.1.0.jarSPARK_CLASSPATH中:

    export SPARK_CLASSPATH=$SPARK_CLASSPATH:${SUPERMAP_HOME}/Bin/iobjects-spark-0.1.0.jar

    在Spark 1.0+ 版本,SPARK_CLASSPATH 再也不被推薦使用,能夠在 spark-submit 提交做業時使用--driver-class-path 來設定程序驅動端的Java類路徑,同時,使用spark.executor.extraClassPath設定做業執行端的Java類庫路徑

    值得注意的是,若是使用 OracleJDK 進行程序開發,須要使用 SuperMap iObjects Java Home/Bin 目錄下的 libmawt.so 文件替換 $JRE_HOME/lib/amd64/headless 目錄下的 libmawt.so 文件,並同步修改集羣中全部節點

    完成 SuperMap iObjects Java 部署後,咱們須要將 SuperMap iObjects Java 分發到集羣中全部節點, 並將修改的 spark-env.sh 也同步到集羣中全部節點

4.2.2 運行做業

環境配置完成後,你就能夠直接使用 spark-submit 命名來提交你的GISpark做業(Jobs)

4.2.3 構建緩存(BuildCache)

支持類型包括點數據渲染圖,點數據熱度圖,緩存結果能夠寫入HDFS中,也能夠寫入mongoDB中 在使用mongoDB做爲緩存存儲時,地圖名稱在--output參數中給出 若是結果存儲在本地,則經過--name參數給出 BuildCache參數列表

usage: BuildCache
 |--input input path
 |--bounds left,right,bottom,top
 |--level levecount  (default 3)
 |--output path or mongo connection info ( ip:27017,Database,CacheName,VersionAlias)
 |--type basic or heatmap
 |--name cacheName
 |--help

4.2.4 生成點數據渲染圖,並把結果寫到HDFS中

bin/spark-submit --class com.supermap.spark.main.Main \
    --master spark://master:7077 iobjects-spark-0.1.0.jar BuildCache \
    --input hdfs://controller:9000/date/tripsplit/2013/2013-01-01-0-12 \ 
    --bounds -74.150,40.550,-73.750,40.950 \
    --level 6 \
    --output hdfs://controller:9000/cache/trip01_1  \
    --type basic --name tripPoints

4.2.5 生成點數據渲染圖,並把結果寫到mongoDB緩存的V1版本

bin/spark-submit --class com.supermap.spark.main.Main  \
    --master spark://master:7077 iobjects-spark-0.1.0.jar Buildcache \
    --input hdfs://controller:9000/date/tripsplit/2013/2013-01-01-0-12  \
    --bounds -74.050,40.650,-73.850,40.850 \
    --level 6 \
    --output 192.168.14.2:27017,test4M1,test1,V1  \
    --type basic

4.2.6 生成點數據熱度圖,並把結果寫到HDFS中

bin/spark-submit --class com.supermap.spark.main.Main  \
    --master spark://master:7077 iobjects-spark-0.1.0.jar BuildCache \
    --input hdfs://controller:9000/date/tripsplit/2013/2013-01-01-0-12  \
    --bounds -74.050,40.650,-73.850,40.850 \
    --level 3 --output /cache  \
    --type heatmap \
    --name heatmap0101

4.2.7 生成點數據熱度圖,並把結果寫到mongoDB緩存的V1版本

bin/spark-submit --class com.supermap.spark.main.Main \
    --master spark://master:7077 iobjects-spark-0.1.0.jar Buildcache \
    --input hdfs://controller:9000/date/tripsplit/2013/2013-01-01-0-12 \
    --bounds -74.050,40.650,-73.850,40.850 \
    --level 6 \
    --output 192.168.14.2:27017,test4M1,test1_heat,V1 \
    --type heatmap

經過mongoDB存儲的緩存數據能夠直接經過iServer發佈,測試結果地址以下:

4.2.8 核密度分析(KernelDensity)

支持點數據的核密度分析,結果爲.grd格式柵格文件,可在iDesktop中導入爲柵格數據集 KernelDensity參數列表。

usage: KernelDensity
     |--input input path
     |--geoidx geometry index for input data (default 0)
     |--separator field separator (default ,)
     |--query query window in format of left,bottom,right,top
     |--resolution resolution of result grid (default 0.001)
     |--radius radius for search (default 0.01)
     |--output output .grd file path
     |--part partition number (default 0)
     |--multi true or false, multi level or single level (default false)
     |--help

4.2.9 生成點數據核密度分析結果,並把結果保存爲.grd文件

bin/spark-submit --class com.supermap.spark.main.KernelDensity \
    --master spark://master:7077 iobjects-spark-0.1.0.jar \
    --input data/analyst/trip_data_1_sample_14k.csv 
    --geoidx 10 \
    --separator , \
    --query -74.150,40.550,-73.750,40.950 \
    --resolution 0.0004 \
    --radius 0.004 \
    --output KernelDensityResult

5. 版本歷史

0.1.0(M1) - 2016-08-05

6.後續計劃

  • 項目研發流程梳理與優化(持續發佈,Git使用規範與工做流程制定,自動化測試案例補充...)
  • 支持 Spark SQL 中的 DataFrame/DataSet
  • 時空大數據存儲方案(矢量數據,影像數據,實時數據,空間索引...)
  • 更多空間分析功能支持(空間查詢,空間鏈接,臨近搜索,空間統計,抽稀,聚類...)
  • Spark 2.0 版本新特性研究與對接
相關文章
相關標籤/搜索