Apache Spark是功能強大的分佈式並行計算平臺。iObject for Spark是全球首個面向Spark的時空大數據分析引擎,經過將專業GIS組件引入Spark環境中運行,極大擴充了Spark的能力,使其具有了專業級的空間數據處理、空間分析和專題製圖的功能,既方便了使用Spark的大數據分析專家,也爲專業GIS領域應用提供了強大的分佈式並行處理能力。html
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
項目的每日構建版本(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>
因爲咱們提供pom文件,你能夠在項目根目錄下直接使用Maven命令進行打包:緩存
mvn package
打包成功後,你能夠在target目錄下獲取 iobjects-spark-0.1.0.jar 將該包加入到你的項目依賴中,就能夠基於GISpark提供的相關API進行開發了oracle
Apache Hadoop 集羣部署請參考 Apache Hadoopless
Apache Spark 集羣部署請參考 Apache Sparkmaven
SuperMap iObjects Java 安裝請參考 SuperMap iObjects
配置 Apache Spark 集羣
在安裝完 SuperMap iObjects Java 組件後,須要將 SuperMap iObjects Java 組件的 Bin 目錄路徑設置到 spark-env.h
的 LD_LIBRARY_PATH
中:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${SUPERMAP_HOME}/Bin
同時,咱們須要設置 iobjects-spark-0.1.0.jar 到 SPARK_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
也同步到集羣中全部節點
環境配置完成後,你就能夠直接使用 spark-submit
命名來提交你的GISpark做業(Jobs)
支持類型包括點數據渲染圖,點數據熱度圖,緩存結果能夠寫入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
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
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
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
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發佈,測試結果地址以下:
支持點數據的核密度分析,結果爲.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
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
0.1.0(M1) - 2016-08-05