为GA Server for Linux 环境配置依赖的Python库

Posted by Keling Ma on 2019-04-01

Run Python Script task 是ArcGIS GA Server 10.7提供的一项新功能,让GA的分析能力从封闭走向开放,通过Run Python Script工具你可以直接调用PySpark库,也可以基于当下流行的机器学习库实现空间大数据的智能分析,可以说这是一项相当激动人心的突破。美中不足的是在GA for Linux平台上,需要用户手动配置GA依赖的python库,这篇配置短文希望能帮到你更快上手。

一 安装Python 包

1,官网下载安装包

下载地址:https://www.python.org/downloads/source/

在文章写的当下,python最新的稳定版本是3.7.3,更新时间是2019年3月25日。

For linux版本需要下载源码包自行编译,这里我测试下载了Gzipped source tarball。

2,安装依赖包

1
[root@gis088 home]# yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make

3,编译python包

  • 进入tar包所在目录,解压缩tar包
1
2
3
[root@gis088 home]# cd /home/makl
[root@gis088 makl]# tar -xvf Python-3.7.3.tar
[root@gis088 makl]# cd Python-3.7.3/
  • 编译python库到/usr/local/python3
1
2
3
4
5
[root@gis088 Python-3.7.3]# mkdir target
[root@gis088 Python-3.7.3]# cd target
[root@gis088 target]#../configure --prefix=/usr/local/python3
[root@gis088 target]# make
[root@gis088 target]# make install

最终我们用到的python库位于/usr/local/python3。

二 部署Python包到GA Server

在GA集群环境下,为了让每台GA 在执行任务时都能访问到python库,还需要拷贝上面编译好的python库到每台GA服务器,确保python 路径在所有服务器上保持一致。

在我的测试环境中GA集群中共有三台服务器:39,40,41,现在通过scp命令拷贝编译好的文件到所有GA服务器的/usr/local/python3目录:

1
2
3
[root@gis088 local]# scp -r python3/ 10.10.20.39:/usr/local
[root@gis088 local]# scp -r python3/ 10.10.20.40:/usr/local
[root@gis088 local]# scp -r python3/ 10.10.20.41:/usr/local

三 更新Server属性

更新Server属性,让Server能正确识别Python库。

  • 浏览器中打开Server 管理目录,并以管理员身份登陆

目录格式:https://server:port/arcgis/admin

我的测试样例:https://gis039.esri.local/arcgis/admin

  • 导航到system/properties页面

https://gis039.esri.local/arcgis/admin/system/properties,

  • 添加属性

{“pysparkPython”:"/usr/local/python3/bin/python3"}

四 验证

现在我们通过Run python script工具来验证前面部署的python库是否成功。

  • 以管理员身份,登陆GA所在的Server REST 服务目录

例如:https://gis039.esri.local/arcgis/rest/services>

  • 按照System->GeoAnalyticsTools->RunPythonScript->Submit Job步骤,打开Run python script Summit Job页面
  • 在Python Script 窗口输入print(“hello world!”)
  • 点击Sumbit Job按钮(get or post都可以),提交请求。

如果你能看到任务成功执行,那就说明之前的部署生效啦。事实上在日志中已经打印出来GA实际使用的python库。

pythonlib