Quantcast
Channel: 懒得折腾
Viewing all articles
Browse latest Browse all 764

[Hadoop学习]Esri/gis-tools-for-hadoop介绍

$
0
0

[Hadoop学习]Esri/gis-tools-for-hadoop介绍

分类: Hadoop ArcGIS小工具 3871人阅读 评论(1) 收藏 举报

上一篇,我们已经将Hadoop环境搭建好了,今天我们就根据Esri提供的gis-tools-for-hadoop来切身体会一下Hadoop的工作原理以及Hadoop与GIS的初次约会。

相关环境:

Esri/gis-tools-for-hadoop:https://github.com/Esri/gis-tools-for-hadoop

  • Sample tools that demonstrate full stack implementations of all the resources provided to solve GIS problems using Hadoop
  • Templates for building custom tools that solve specific problems

GIS Tools Breakdown

Resources for building custom tools

hive-0.11.0:http://www.apache.org/dyn/closer.cgi/hive/

在使用Esri提供的工具之前,我们需要安装HIVE

  1. hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。 其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。

HIVE是Facebook贡献的,比较类似于MySQL的语法,其实经常使用数据库SQL语句的基本都不陌生,这也是Hive项目研究的原因,因为SQL的用户群太广泛了。——————————————————————

**************************分割线*****************************

———————————————————————————————–
安装Hive跟Hadoop一样,就是一个解压缩命令,而且只需要安装在namenode机器上(master)

安装完毕之后,需要配置相关文件

1:安装HIVE在hadoop用户下安装,确保hadoop用户对hive文件夹有权限

  1. drwxrwxr-x. 10 hadoop hadoop     4096 Jun 25 18:55 hive-0.11.0

2:我们需要将Hadoop和JDK的环境变量添加到如下文件中:

/home/hadoop/hive-0.11.0/conf/hive-env.sh
/home/hadoop/hive-0.11.0/bin/hive-config.sh

3:需要将HIVE_HOME的信息添加到hadoop用户的环境变量中

  1. export JAVA_HOME=/home/jdk/jdk1.7.0_25
  2. export PATH=$JAVA_HOME/bin:$PATH
  3. export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib
  4. #Hadoop
  5. export HADOOP_HOME=/home/hadoop/hadoop-1.2.0
  6. export HIVE_HOME=/home/hadoop/hive-0.11.0
  7. export HADOOP_HOME_WARN_SUPPRESS=1
  8. export PATH=$PATH:$HADOOP_HOME/bin:$HIVE_HOME/bin
  9. export CLASSPATH=$CLASSPATH:$HIVE_HOME/lib

4:默认情况下$HIVE_HOME/conf下面没有hive-default.xml、hive-site.xml文件,只有hive-default.xml.template文件,使用cp命令复制一份即可

  1. [hadoop@namenode conf]$ cp hive-default.xml.template hive-default.xml
  2. [hadoop@namenode conf]$ cp hive-default.xml.template hive-site.xml
  3. [hadoop@namenode conf]$ ll
  4. total 248
  5. -rw-rw-r–. 1 hadoop hadoop 75005 Jun 26 02:19 hive-default.xml
  6. -rw-rw-r–. 1 hadoop hadoop 75005 May 11 12:06 hive-default.xml.template
  7. -rw-rw-r–. 1 hadoop hadoop  2714 Jun 26 02:34 hive-env.sh
  8. -rw-rw-r–. 1 hadoop hadoop  2378 May 11 12:06 hive-env.sh.template
  9. -rw-rw-r–. 1 hadoop hadoop  2465 May 11 12:06 hive-exec-log4j.properties.template
  10. -rw-rw-r–. 1 hadoop hadoop  2941 Jun 26 02:38 hive-log4j.properties
  11. -rw-rw-r–. 1 hadoop hadoop  2870 May 11 12:06 hive-log4j.properties.template
  12. -rw-rw-r–. 1 hadoop hadoop 75005 Jun 26 02:19 hive-site.xml

5:用户可以修改warehouse的默认路径,修改$HIVE_HOME/conf/hive-site.xml,该文件比较大

  1. <property>
  2.   <name>hive.metastore.warehouse.dir</name>
  3.   <value>/user/hive/warehouse</value>
  4.   <description>location of default database for the warehouse</description>
  5. </property>

测试hive

  1. [hadoop@namenode ~]$ hive
  2. Logging initialized using configuration in file:/home/hadoop/hive-0.11.0/conf/hive-log4j.properties
  3. Hive history file=/tmp/hadoop/hive_job_log_hadoop_4317@namenode.com_201306261028_23687925.txt
  4. hive>

——————————————————————

**************************分割线*****************************

———————————————————————————————–
Esri的gis-tools-for-hadoop介绍

  1. [hadoop@namenode samples]$ ll
  2. total 20
  3. drwxr-xr-x. 4 hadoop hadoop 4096 Jun 26 04:54 data
  4. drwxr-xr-x. 2 hadoop hadoop 4096 Jun 26 04:54 lib
  5. drwxr-xr-x. 2 hadoop hadoop 4096 Jun 26 05:30 point-in-polygon-aggregation-hive
  6. drwxr-xr-x. 5 hadoop hadoop 4096 Jun 26 04:54 point-in-polygon-aggregation-mr
  7. -rw-r–r–. 1 hadoop hadoop   98 Jun 26 04:54 README.md

里面有data文件夹,包含一个地震数据(csv)和美国州立数据(json)

  1. [hadoop@namenode data]$ ll
  2. total 556
  3. drwxr-xr-x. 2 hadoop hadoop   4096 Jun 26 04:54 counties-data
  4. drwxr-xr-x. 2 hadoop hadoop   4096 Jun 26 04:54 earthquake-data
  5. -rw-r–r–. 1 hadoop hadoop 560721 Jun 26 04:54 samples.gdb.zip

lib文件夹里面是非常重要的两个Jar包

  1. [hadoop@namenode lib]$ ll
  2. total 908
  3. -rw-r–r–. 1 hadoop hadoop 794165 Jun 26 04:54 esri-geometry-api.jar
  4. -rw-r–r–. 1 hadoop hadoop 135121 Jun 26 04:54 spatial-sdk-hadoop.jar

point-in-polygon…-hive文件里面有一个SQL文件,该文件非常详细介绍了使用步骤

  1. [hadoop@namenode point-in-polygon-aggregation-hive]$ ll
  2. total 8
  3. -rw-r–r–. 1 hadoop hadoop 3195 Jun 26 04:54 README.md
  4. -rw-r–r–. 1 hadoop hadoop 1161 Jun 26 04:54 run-sample.sql

point-in-polygon…-mr里面有关于使用java开发hadoop的源代码

  1. [hadoop@namenode point-in-polygon-aggregation-mr]$ ll
  2. total 28
  3. -rw-r–r–. 1 hadoop hadoop 4885 Jun 26 04:54 aggregation-sample.jar
  4. -rw-r–r–. 1 hadoop hadoop 1012 Jun 26 04:54 build.xml
  5. drwxr-xr-x. 2 hadoop hadoop 4096 Jun 26 04:54 cmd
  6. drwxr-xr-x. 2 hadoop hadoop 4096 Jun 26 04:54 gp
  7. -rw-r–r–. 1 hadoop hadoop 1913 Jun 26 04:54 README.md
  8. drwxr-xr-x. 3 hadoop hadoop 4096 Jun 26 04:54 src

——————————————————————

**************************分割线*****************************

———————————————————————————————–
在执行相关SQL之前,需要将数据导入到HDFS里面,我们不能使用Linux系统的cp和mv来执行,必须使用hadoop自带的工具来完成

  1. [hadoop@namenode ~]$ hadoop fs
  2. Usage: java FsShell
  3.            [-ls <path>]
  4.            [-lsr <path>]
  5.            [-du <path>]
  6.            [-dus <path>]
  7.            [-count[-q] <path>]
  8.            [-mv <src> <dst>]
  9.            [-cp <src> <dst>]
  10.            [-rm [-skipTrash] <path>]
  11.            [-rmr [-skipTrash] <path>]
  12.            [-expunge]
  13.            [-put <localsrc> ... <dst>]
  14.            [-copyFromLocal <localsrc> ... <dst>]
  15.            [-moveFromLocal <localsrc> ... <dst>]
  16.            [-get [-ignoreCrc] [-crc] <src> <localdst>]
  17.            [-getmerge <src> <localdst> [addnl]]
  18.            [-cat <src>]
  19.            [-text <src>]
  20.            [-copyToLocal [-ignoreCrc] [-crc] <src> <localdst>]
  21.            [-moveToLocal [-crc] <src> <localdst>]
  22.            [-mkdir <path>]
  23.            [-setrep [-R] [-w] <rep> <path/file>]
  24.            [-touchz <path>]
  25.            [-test -[ezd] <path>]
  26.            [-stat [format] <path>]
  27.            [-tail [-f] <file>]
  28.            [-chmod [-R] <MODE[,MODE]… | OCTALMODE> PATH…]
  29.            [-chown [-R] [OWNER][:[GROUP]] PATH…]
  30.            [-chgrp [-R] GROUP PATH…]
  31.            [-help [cmd]]
  32. Generic options supported are
  33. -conf <configuration file>     specify an application configuration file
  34. -D <property=value>            use value for given property
  35. -fs <local|namenode:port>      specify a namenode
  36. -jt <local|jobtracker:port>    specify a job tracker
  37. -files <comma separated list of files>    specify comma separated files to be copied to the map reduce cluster
  38. -libjars <comma separated list of jars>    specify comma separated jar files to include in the classpath.
  39. -archives <comma separated list of archives>    specify comma separated archives to be unarchived on the compute machines.
  40. The general command line syntax is
  41. bin/hadoop command [genericOptions] [commandOptions]

1:将数据导入到hdfs

  1. [hadoop@namenode ~]$ hadoop fs -put /home/hadoop/gis-tools-for-hadoop-master/samples/  /home/hadoop/hadoop-1.2.0/tmp/

以上就是使用-put将原来物理存储在/home/hadoop/gis-tools-for-hadoop-master/samples/ 文件夹里面的信息,导入到/home/hadoop/hadoop-1.2.0/tmp/里面。导入进去之后,我们可以在任意datanode节点机器看到很多碎文件

  1. [hadoop@datanode1 current]$ pwd
  2. /home/hadoop/hadoop-1.2.0/tmp/dfs/data/current
  3. [hadoop@datanode1 current]$ ll
  4. total 7052
  5. -rw-rw-r–. 1 hadoop hadoop      98 Jun 26 06:12 blk_2562006058303613171
  6. -rw-rw-r–. 1 hadoop hadoop      11 Jun 26 06:12 blk_2562006058303613171_1050.meta
  7. -rw-rw-r–. 1 hadoop hadoop  560721 Jun 26 06:12 blk_3056013857537171121
  8. -rw-rw-r–. 1 hadoop hadoop    4391 Jun 26 06:12 blk_3056013857537171121_1052.meta
  9. -rw-rw-r–. 1 hadoop hadoop    2047 Jun 26 06:12 blk_3813361044238402711
  10. -rw-rw-r–. 1 hadoop hadoop      23 Jun 26 06:12 blk_3813361044238402711_1063.meta
  11. -rw-rw-r–. 1 hadoop hadoop    2060 Jun 26 06:12 blk_5126515286091847995
  12. -rw-rw-r–. 1 hadoop hadoop      27 Jun 26 06:12 blk_5126515286091847995_1064.meta
  13. -rw-rw-r–. 1 hadoop hadoop  794165 Jun 26 06:12 blk_5144324295121310544
  14. -rw-rw-r–. 1 hadoop hadoop    6215 Jun 26 06:12 blk_5144324295121310544_1055.meta
  15. -rw-rw-r–. 1 hadoop hadoop    1913 Jun 26 06:12 blk_7055687596152865845
  16. -rw-rw-r–. 1 hadoop hadoop      23 Jun 26 06:12 blk_7055687596152865845_1062.meta
  17. -rw-rw-r–. 1 hadoop hadoop 5742811 Jun 26 06:12 blk_7385460214599207016
  18. -rw-rw-r–. 1 hadoop hadoop   44875 Jun 26 06:12 blk_7385460214599207016_1053.meta
  19. -rw-rw-r–. 1 hadoop hadoop    1045 Jun 26 06:12 blk_-787033794569559952
  20. -rw-rw-r–. 1 hadoop hadoop      19 Jun 26 06:12 blk_-787033794569559952_1056.meta
  21. -rw-rw-r–. 1 hadoop hadoop    3195 Jun 26 06:12 blk_8646433984325059766
  22. -rw-rw-r–. 1 hadoop hadoop      35 Jun 26 06:12 blk_8646433984325059766_1048.meta
  23. -rw-rw-r–. 1 hadoop hadoop     772 Jun 26 06:12 dncp_block_verification.log.curr
  24. -rw-rw-r–. 1 hadoop hadoop     159 Jun 26 03:30 VERSION

2:列出HDFS文件

  1. [hadoop@namenode ~]$ hadoop fs -ls /home/hadoop/hadoop-1.2.0/tmp/
  2. Found 6 items
  3. -rw-r–r–   1 hadoop supergroup         98 2013-06-26 09:30 /home/hadoop/hadoop-1.2.0/tmp/README.md
  4. drwxr-xr-x   – hadoop supergroup          0 2013-06-26 09:30 /home/hadoop/hadoop-1.2.0/tmp/data
  5. drwxr-xr-x   – hadoop supergroup          0 2013-06-26 09:30 /home/hadoop/hadoop-1.2.0/tmp/lib
  6. drwxr-xr-x   – hadoop supergroup          0 2013-06-26 09:38 /home/hadoop/hadoop-1.2.0/tmp/mapred
  7. drwxr-xr-x   – hadoop supergroup          0 2013-06-26 09:30 /home/hadoop/hadoop-1.2.0/tmp/point-in-polygon-aggregation-hive
  8. drwxr-xr-x   – hadoop supergroup          0 2013-06-26 09:30 /home/hadoop/hadoop-1.2.0/tmp/point-in-polygon-aggregation-mr

3:列出HDFS目录下某个文档中的文件

  1. [hadoop@namenode ~]$ hadoop fs -ls input /home/hadoop/hadoop-1.2.0/tmp/data
  2. ls: Cannot access input: No such file or directory.
  3. Found 3 items
  4. drwxr-xr-x   – hadoop supergroup          0 2013-06-26 09:30 /home/hadoop/hadoop-1.2.0/tmp/data/counties-data
  5. drwxr-xr-x   – hadoop supergroup          0 2013-06-26 09:30 /home/hadoop/hadoop-1.2.0/tmp/data/earthquake-data
  6. -rw-r–r–   1 hadoop supergroup     560721 2013-06-26 09:30 /home/hadoop/hadoop-1.2.0/tmp/data/samples.gdb.zip

4:查看HDFS目录下某个文档文件的内容

  1. hadoop fs -cat  input /home/hadoop/hadoop-1.2.0/tmp/data/earthquake-data/earthquake.csv

5:删除HDFS目录下的文档

  1. hadoop fs –rmr /home/hadoop/hadoop-1.2.0/tmp/data

说明:进入HDFS里面的文件夹结构后,就不能使用Linux的命令比如查看某个文档下的文件不能使用ls,或者cd到某个路径下

使用上面的方法可以验证用户的数据是否上传到HDFS上面去。

——————————————————————

**************************分割线*****************************

———————————————————————————————–

接下来就是用esri提供的SQL语句来进行操作了

  1. // 添加jar包
  2. add jar
  3.   /home/hadoop/esri-geometry-api.jar
  4.   /home/hadoop/spatial-sdk-hadoop.jar;
  5. //创建临时函数,以下SQL语句会用到ST_Point和ST_Contains,如果还用到其他,按照下面方法创建即可
  6. create temporary function ST_Point as ‘com.esri.hadoop.hive.ST_Point’;
  7. create temporary function ST_Contains as ‘com.esri.hadoop.hive.ST_Contains’;
  8. //创建一个外部表,指定相关结构,然后根据上面提供的csv文件,将该文件导入到该表中
  9. //特别注意这个路径需要指定导入到HDFS里面的路径
  10. //如果成功导入,可以使用Select * from earthquakes1;是会有记录返回的,如果
  11. //没有记录返回说明没有导入成功
  12. //HIVE的表类型有托管表和外部表,外部表可以理解为如果删除数据,并没有删除实际数据,只是将HDFS里面的元数据信息删除掉,具体参考HIVE帮助
  13. CREATE EXTERNAL TABLE IF NOT EXISTS earthquakes1 (earthquake_date STRING, latitude DOUBLE, longitude DOUBLE, magnitude DOUBLE)
  14. ROW FORMAT DELIMITED FIELDS TERMINATED BY ‘,’
  15. LOCATION ‘/home/hadoop/hadoop-1.2.0/tmp/data/earthquake-data’;
  16. //同样道理创建一个counties1表
  17. CREATE EXTERNAL TABLE IF NOT EXISTS counties1 (Area string, Perimeter string, State string, County string, Name string, BoundaryShape binary)
  18. ROW FORMAT SERDE ‘com.esri.hadoop.hive.serde.JsonSerde’
  19. STORED AS INPUTFORMAT ‘com.esri.json.hadoop.EnclosedJsonInputFormat’
  20. OUTPUTFORMAT ‘org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat’
  21. LOCATION ‘/home/hadoop/hadoop-1.2.0/tmp/data/counties-data’;
  22. //执行如下SQL语句即可
  23. SELECT counties1.name, count(*) cnt FROM counties1
  24. JOIN earthquakes1
  25. WHERE ST_Contains(counties1.boundaryshape, ST_Point(earthquakes1.longitude, earthquakes1.latitude))
  26. GROUP BY counties1.name
  27. ORDER BY cnt desc;

说明:其实HIVE比较类似于我们常用的SQL语句,大家在使用过程中可以类比SQL尤其是学过MySQL就更加熟悉了,我们都知道SQL语句的有简单的比如Select * from table;insert into …;delete from table等,也有复杂的,其实也就是用户自己编写存储过程等,那么上面的这个步骤就是HIVE一个非常典型的用户定义函数(user-defined function,UDF)这个也可以类比一下SQL的存储过程,有了这种我们就可以编写复杂的语句来完成我们的功能了,因为HIVE本身是Java写的,那么用户编写UDF也必须使用Java来编写,本身UDF分为三种,这个具体看帮助。
编写好的UDF我们怎么使用呢?参考上面的例子
1:我们需要将Java开发的UDF打成jar包
2:在Hive注册这个文件  add jar
3:我们还需要为java的类名起一个别名
create temporary function ST_Point as ‘com.esri.hadoop.hive.ST_Point';
以上步骤2、3每次启动hive都需要重新执行这两步骤

4:在Hive里面创建表并导入数据

5:执行相关语句获得相关功能

感兴趣的话大家也可以进入以下目录来查看相关的源代码
%Hadoop%\spatial-framework-for-hadoop-master\spatial-framework-for-hadoop-master\hive\src\com\esri\hadoop\hive

而且Esri提供的这个工具包包含了基本类似于oracle ST_Geometry的空间构造函数、空间关系函数

可以查看%Hadoop%\spatial-framework-for-hadoop-master\spatial-framework-for-hadoop-master\hive\function-ddl.sql

  1. create temporary function ST_AsBinary as ‘com.esri.hadoop.hive.ST_AsBinary’;
  2. create temporary function ST_AsGeoJSON as ‘com.esri.hadoop.hive.ST_AsGeoJson’;
  3. create temporary function ST_AsJSON as ‘com.esri.hadoop.hive.ST_AsJson’;
  4. create temporary function ST_AsText as ‘com.esri.hadoop.hive.ST_AsText’;
  5. create temporary function ST_GeomFromJSON as ‘com.esri.hadoop.hive.ST_GeomFromJson’;
  6. create temporary function ST_GeomFromGeoJSON as ‘com.esri.hadoop.hive.ST_GeomFromGeoJson’;
  7. create temporary function ST_GeomFromText as ‘com.esri.hadoop.hive.ST_GeomFromText’;
  8. create temporary function ST_GeomFromWKB as ‘com.esri.hadoop.hive.ST_GeomFromWKB’;
  9. create temporary function ST_PointFromWKB as ‘com.esri.hadoop.hive.ST_PointFromWKB’;
  10. create temporary function ST_LineFromWKB as ‘com.esri.hadoop.hive.ST_LineFromWKB’;
  11. create temporary function ST_PolyFromWKB as ‘com.esri.hadoop.hive.ST_PolyFromWKB’;
  12. create temporary function ST_MPointFromWKB as ‘com.esri.hadoop.hive.ST_MPointFromWKB’;
  13. create temporary function ST_MLineFromWKB as ‘com.esri.hadoop.hive.ST_MLineFromWKB’;
  14. create temporary function ST_MPolyFromWKB as ‘com.esri.hadoop.hive.ST_MPolyFromWKB’;
  15. create temporary function ST_GeomCollection as ‘com.esri.hadoop.hive.ST_GeomCollection’;
  16. create temporary function ST_GeometryType as ‘com.esri.hadoop.hive.ST_GeometryType’;
  17. create temporary function ST_Point as ‘com.esri.hadoop.hive.ST_Point’;
  18. create temporary function ST_PointZ as ‘com.esri.hadoop.hive.ST_PointZ’;
  19. create temporary function ST_LineString as ‘com.esri.hadoop.hive.ST_LineString’;
  20. create temporary function ST_Polygon as ‘com.esri.hadoop.hive.ST_Polygon’;
  21. create temporary function ST_MultiPoint as ‘com.esri.hadoop.hive.ST_MultiPoint’;
  22. create temporary function ST_MultiLineString as ‘com.esri.hadoop.hive.ST_MultiLineString’;
  23. create temporary function ST_MultiPolygon as ‘com.esri.hadoop.hive.ST_MultiPolygon’;
  24. create temporary function ST_SetSRID as ‘com.esri.hadoop.hive.ST_SetSRID’;
  25. create temporary function ST_SRID as ‘com.esri.hadoop.hive.ST_SRID’;
  26. create temporary function ST_IsEmpty as ‘com.esri.hadoop.hive.ST_IsEmpty’;
  27. create temporary function ST_IsSimple as ‘com.esri.hadoop.hive.ST_IsSimple’;
  28. create temporary function ST_Dimension as ‘com.esri.hadoop.hive.ST_Dimension’;
  29. create temporary function ST_X as ‘com.esri.hadoop.hive.ST_X’;
  30. create temporary function ST_Y as ‘com.esri.hadoop.hive.ST_Y’;
  31. create temporary function ST_MinX as ‘com.esri.hadoop.hive.ST_MinX’;
  32. create temporary function ST_MaxX as ‘com.esri.hadoop.hive.ST_MaxX’;
  33. create temporary function ST_MinY as ‘com.esri.hadoop.hive.ST_MinY’;
  34. create temporary function ST_MaxY as ‘com.esri.hadoop.hive.ST_MaxY’;
  35. create temporary function ST_IsClosed as ‘com.esri.hadoop.hive.ST_IsClosed’;
  36. create temporary function ST_IsRing as ‘com.esri.hadoop.hive.ST_IsRing’;
  37. create temporary function ST_Length as ‘com.esri.hadoop.hive.ST_Length’;
  38. create temporary function ST_GeodesicLengthWGS84 as ‘com.esri.hadoop.hive.ST_GeodesicLengthWGS84′;
  39. create temporary function ST_Area as ‘com.esri.hadoop.hive.ST_Area’;
  40. create temporary function ST_Is3D as ‘com.esri.hadoop.hive.ST_Is3D’;
  41. create temporary function ST_Z as ‘com.esri.hadoop.hive.ST_Z’;
  42. create temporary function ST_MinZ as ‘com.esri.hadoop.hive.ST_MinZ’;
  43. create temporary function ST_MaxZ as ‘com.esri.hadoop.hive.ST_MaxZ’;
  44. create temporary function ST_IsMeasured as ‘com.esri.hadoop.hive.ST_IsMeasured’;
  45. create temporary function ST_M as ‘com.esri.hadoop.hive.ST_M’;
  46. create temporary function ST_MinM as ‘com.esri.hadoop.hive.ST_MinM’;
  47. create temporary function ST_MaxM as ‘com.esri.hadoop.hive.ST_MaxM’;
  48. create temporary function ST_CoordDim as ‘com.esri.hadoop.hive.ST_CoordDim’;
  49. create temporary function ST_NumPoints as ‘com.esri.hadoop.hive.ST_NumPoints’;
  50. create temporary function ST_PointN as ‘com.esri.hadoop.hive.ST_PointN’;
  51. create temporary function ST_StartPoint as ‘com.esri.hadoop.hive.ST_StartPoint’;
  52. create temporary function ST_EndPoint as ‘com.esri.hadoop.hive.ST_EndPoint’;
  53. create temporary function ST_ExteriorRing as ‘com.esri.hadoop.hive.ST_ExteriorRing’;
  54. create temporary function ST_NumInteriorRing as ‘com.esri.hadoop.hive.ST_NumInteriorRing’;
  55. create temporary function ST_InteriorRingN as ‘com.esri.hadoop.hive.ST_InteriorRingN’;
  56. create temporary function ST_NumGeometries as ‘com.esri.hadoop.hive.ST_NumGeometries’;
  57. create temporary function ST_GeometryN as ‘com.esri.hadoop.hive.ST_GeometryN’;
  58. create temporary function ST_Centroid as ‘com.esri.hadoop.hive.ST_Centroid’;
  59. create temporary function ST_Contains as ‘com.esri.hadoop.hive.ST_Contains’;
  60. create temporary function ST_Crosses as ‘com.esri.hadoop.hive.ST_Crosses’;
  61. create temporary function ST_Disjoint as ‘com.esri.hadoop.hive.ST_Disjoint’;
  62. create temporary function ST_EnvIntersects as ‘com.esri.hadoop.hive.ST_EnvIntersects’;
  63. create temporary function ST_Envelope as ‘com.esri.hadoop.hive.ST_Envelope’;
  64. create temporary function ST_Equals as ‘com.esri.hadoop.hive.ST_Equals’;
  65. create temporary function ST_Overlaps as ‘com.esri.hadoop.hive.ST_Overlaps’;
  66. create temporary function ST_Intersects as ‘com.esri.hadoop.hive.ST_Intersects’;
  67. create temporary function ST_Relate as ‘com.esri.hadoop.hive.ST_Relate’;
  68. create temporary function ST_Touches as ‘com.esri.hadoop.hive.ST_Touches’;
  69. create temporary function ST_Within as ‘com.esri.hadoop.hive.ST_Within’;
  70. create temporary function ST_Distance as ‘com.esri.hadoop.hive.ST_Distance’;
  71. create temporary function ST_Boundary as ‘com.esri.hadoop.hive.ST_Boundary’;
  72. create temporary function ST_Buffer as ‘com.esri.hadoop.hive.ST_Buffer’;
  73. create temporary function ST_ConvexHull as ‘com.esri.hadoop.hive.ST_ConvexHull’;
  74. create temporary function ST_Intersection as ‘com.esri.hadoop.hive.ST_Intersection’;
  75. create temporary function ST_Union as ‘com.esri.hadoop.hive.ST_Union’;
  76. create temporary function ST_Difference as ‘com.esri.hadoop.hive.ST_Difference’;
  77. create temporary function ST_SymmetricDiff as ‘com.esri.hadoop.hive.ST_SymmetricDiff’;
  78. create temporary function ST_SymDifference as ‘com.esri.hadoop.hive.ST_SymmetricDiff’;
  79. create temporary function ST_Aggr_Union as ‘com.esri.hadoop.hive.ST_Aggr_Union’

确保数据都导入进去之后,执行SQL语句后,信息如下

  1. hive> SELECT counties1.name, count(*) cnt FROM counties1
  2.     > JOIN earthquakes1
  3.     > WHERE ST_Contains(counties1.boundaryshape, ST_Point(earthquakes1.longitude, earthquakes1.latitude))
  4.     > GROUP BY counties1.name
  5.     > ORDER BY cnt desc;
  6. Total MapReduce jobs = 3
  7. Launching Job 1 out of 3
  8. Number of reduce tasks determined at compile time: 1
  9. In order to change the average load for a reducer (in bytes):
  10.   set hive.exec.reducers.bytes.per.reducer=<number>
  11. In order to limit the maximum number of reducers:
  12.   set hive.exec.reducers.max=<number>
  13. In order to set a constant number of reducers:
  14.   set mapred.reduce.tasks=<number>
  15. Starting Job = job_201306260649_0003, Tracking URL = http://namenode.com:50030/jobdetails.jsp?jobid=job_201306260649_0003
  16. Kill Command = /home/hadoop/hadoop-1.2.0/libexec/../bin/hadoop job  -kill job_201306260649_0003
  17. Hadoop job information for Stage-1: number of mappers: 2; number of reducers: 1
  18. 2013-06-26 09:57:13,072 Stage-1 map = 0%,  reduce = 0%
  19. 2013-06-26 09:57:27,152 Stage-1 map = 50%,  reduce = 0%, Cumulative CPU 5.83 sec
  20. 2013-06-26 09:57:28,160 Stage-1 map = 50%,  reduce = 0%, Cumulative CPU 5.83 sec
  21. 2013-06-26 09:57:29,167 Stage-1 map = 50%,  reduce = 0%, Cumulative CPU 5.83 sec
  22. 2013-06-26 09:57:30,174 Stage-1 map = 50%,  reduce = 0%, Cumulative CPU 5.83 sec
  23. 2013-06-26 09:57:31,187 Stage-1 map = 100%,  reduce = 0%, Cumulative CPU 10.4 sec
  24. 2013-06-26 09:57:32,200 Stage-1 map = 100%,  reduce = 0%, Cumulative CPU 10.4 sec
  25. 2013-06-26 09:57:33,210 Stage-1 map = 100%,  reduce = 0%, Cumulative CPU 10.4 sec
  26. 2013-06-26 09:57:34,219 Stage-1 map = 100%,  reduce = 0%, Cumulative CPU 10.4 sec
  27. 2013-06-26 09:57:35,237 Stage-1 map = 100%,  reduce = 0%, Cumulative CPU 10.4 sec
  28. 2013-06-26 09:57:36,246 Stage-1 map = 100%,  reduce = 0%, Cumulative CPU 10.4 sec
  29. 2013-06-26 09:57:37,256 Stage-1 map = 100%,  reduce = 17%, Cumulative CPU 10.4 sec
  30. 2013-06-26 09:57:38,265 Stage-1 map = 100%,  reduce = 17%, Cumulative CPU 10.4 sec
  31. 2013-06-26 09:57:39,271 Stage-1 map = 100%,  reduce = 17%, Cumulative CPU 10.4 sec
  32. 2013-06-26 09:57:40,278 Stage-1 map = 100%,  reduce = 70%, Cumulative CPU 10.4 sec
  33. 2013-06-26 09:57:41,286 Stage-1 map = 100%,  reduce = 70%, Cumulative CPU 10.4 sec
  34. 2013-06-26 09:57:42,294 Stage-1 map = 100%,  reduce = 70%, Cumulative CPU 10.4 sec
  35. 2013-06-26 09:57:43,301 Stage-1 map = 100%,  reduce = 70%, Cumulative CPU 10.4 sec
  36. 2013-06-26 09:57:44,308 Stage-1 map = 100%,  reduce = 70%, Cumulative CPU 10.4 sec
  37. 2013-06-26 09:57:45,314 Stage-1 map = 100%,  reduce = 70%, Cumulative CPU 10.4 sec
  38. 2013-06-26 09:57:46,323 Stage-1 map = 100%,  reduce = 71%, Cumulative CPU 10.4 sec
  39. 2013-06-26 09:57:47,330 Stage-1 map = 100%,  reduce = 71%, Cumulative CPU 10.4 sec
  40. 2013-06-26 09:57:48,337 Stage-1 map = 100%,  reduce = 71%, Cumulative CPU 10.4 sec
  41. 2013-06-26 09:57:49,343 Stage-1 map = 100%,  reduce = 72%, Cumulative CPU 10.4 sec
  42. 2013-06-26 09:57:50,354 Stage-1 map = 100%,  reduce = 72%, Cumulative CPU 10.4 sec
  43. 2013-06-26 09:57:51,360 Stage-1 map = 100%,  reduce = 72%, Cumulative CPU 10.4 sec
  44. 2013-06-26 09:57:52,369 Stage-1 map = 100%,  reduce = 73%, Cumulative CPU 10.4 sec
  45. 2013-06-26 09:57:53,379 Stage-1 map = 100%,  reduce = 73%, Cumulative CPU 10.4 sec
  46. 2013-06-26 09:57:54,385 Stage-1 map = 100%,  reduce = 73%, Cumulative CPU 10.4 sec
  47. 2013-06-26 09:57:55,391 Stage-1 map = 100%,  reduce = 74%, Cumulative CPU 10.4 sec
  48. 2013-06-26 09:57:56,397 Stage-1 map = 100%,  reduce = 74%, Cumulative CPU 10.4 sec
  49. 2013-06-26 09:57:57,403 Stage-1 map = 100%,  reduce = 74%, Cumulative CPU 10.4 sec
  50. 2013-06-26 09:57:58,411 Stage-1 map = 100%,  reduce = 76%, Cumulative CPU 10.4 sec
  51. 2013-06-26 09:57:59,418 Stage-1 map = 100%,  reduce = 76%, Cumulative CPU 10.4 sec
  52. 2013-06-26 09:58:00,425 Stage-1 map = 100%,  reduce = 76%, Cumulative CPU 10.4 sec
  53. 2013-06-26 09:58:01,433 Stage-1 map = 100%,  reduce = 76%, Cumulative CPU 10.4 sec
  54. 2013-06-26 09:58:02,439 Stage-1 map = 100%,  reduce = 76%, Cumulative CPU 10.4 sec
  55. 2013-06-26 09:58:03,448 Stage-1 map = 100%,  reduce = 76%, Cumulative CPU 10.4 sec
  56. 2013-06-26 09:58:04,464 Stage-1 map = 100%,  reduce = 77%, Cumulative CPU 10.4 sec
  57. 2013-06-26 09:58:05,476 Stage-1 map = 100%,  reduce = 77%, Cumulative CPU 10.4 sec
  58. 2013-06-26 09:58:06,482 Stage-1 map = 100%,  reduce = 77%, Cumulative CPU 10.4 sec
  59. 2013-06-26 09:58:07,488 Stage-1 map = 100%,  reduce = 79%, Cumulative CPU 10.4 sec
  60. 2013-06-26 09:58:08,497 Stage-1 map = 100%,  reduce = 79%, Cumulative CPU 10.4 sec
  61. 2013-06-26 09:58:09,503 Stage-1 map = 100%,  reduce = 79%, Cumulative CPU 10.4 sec
  62. 2013-06-26 09:58:10,516 Stage-1 map = 100%,  reduce = 80%, Cumulative CPU 10.4 sec
  63. 2013-06-26 09:58:11,524 Stage-1 map = 100%,  reduce = 80%, Cumulative CPU 10.4 sec
  64. 2013-06-26 09:58:12,533 Stage-1 map = 100%,  reduce = 80%, Cumulative CPU 43.27 sec
  65. 2013-06-26 09:58:13,541 Stage-1 map = 100%,  reduce = 81%, Cumulative CPU 43.27 sec
  66. 2013-06-26 09:58:14,547 Stage-1 map = 100%,  reduce = 81%, Cumulative CPU 43.27 sec
  67. 2013-06-26 09:58:15,554 Stage-1 map = 100%,  reduce = 81%, Cumulative CPU 43.27 sec
  68. 2013-06-26 09:58:16,559 Stage-1 map = 100%,  reduce = 82%, Cumulative CPU 43.27 sec
  69. 2013-06-26 09:58:17,566 Stage-1 map = 100%,  reduce = 82%, Cumulative CPU 43.27 sec
  70. 2013-06-26 09:58:18,575 Stage-1 map = 100%,  reduce = 82%, Cumulative CPU 43.27 sec
  71. 2013-06-26 09:58:19,582 Stage-1 map = 100%,  reduce = 83%, Cumulative CPU 43.27 sec
  72. 2013-06-26 09:58:20,592 Stage-1 map = 100%,  reduce = 83%, Cumulative CPU 43.27 sec
  73. 2013-06-26 09:58:21,599 Stage-1 map = 100%,  reduce = 83%, Cumulative CPU 43.27 sec
  74. 2013-06-26 09:58:22,606 Stage-1 map = 100%,  reduce = 83%, Cumulative CPU 43.27 sec
  75. 2013-06-26 09:58:23,614 Stage-1 map = 100%,  reduce = 84%, Cumulative CPU 43.27 sec
  76. 2013-06-26 09:58:24,620 Stage-1 map = 100%,  reduce = 84%, Cumulative CPU 43.27 sec
  77. 2013-06-26 09:58:25,626 Stage-1 map = 100%,  reduce = 84%, Cumulative CPU 43.27 sec
  78. 2013-06-26 09:58:26,632 Stage-1 map = 100%,  reduce = 85%, Cumulative CPU 43.27 sec
  79. 2013-06-26 09:58:27,638 Stage-1 map = 100%,  reduce = 85%, Cumulative CPU 43.27 sec
  80. 2013-06-26 09:58:28,650 Stage-1 map = 100%,  reduce = 85%, Cumulative CPU 43.27 sec
  81. 2013-06-26 09:58:29,656 Stage-1 map = 100%,  reduce = 86%, Cumulative CPU 43.27 sec
  82. 2013-06-26 09:58:30,661 Stage-1 map = 100%,  reduce = 86%, Cumulative CPU 43.27 sec
  83. 2013-06-26 09:58:31,668 Stage-1 map = 100%,  reduce = 86%, Cumulative CPU 43.27 sec
  84. 2013-06-26 09:58:32,677 Stage-1 map = 100%,  reduce = 87%, Cumulative CPU 43.27 sec
  85. 2013-06-26 09:58:33,682 Stage-1 map = 100%,  reduce = 87%, Cumulative CPU 43.27 sec
  86. 2013-06-26 09:58:34,690 Stage-1 map = 100%,  reduce = 87%, Cumulative CPU 43.27 sec
  87. 2013-06-26 09:58:35,700 Stage-1 map = 100%,  reduce = 89%, Cumulative CPU 43.27 sec
  88. 2013-06-26 09:58:36,706 Stage-1 map = 100%,  reduce = 89%, Cumulative CPU 43.27 sec
  89. 2013-06-26 09:58:37,713 Stage-1 map = 100%,  reduce = 89%, Cumulative CPU 43.27 sec
  90. 2013-06-26 09:58:38,719 Stage-1 map = 100%,  reduce = 90%, Cumulative CPU 43.27 sec
  91. 2013-06-26 09:58:39,726 Stage-1 map = 100%,  reduce = 90%, Cumulative CPU 43.27 sec
  92. 2013-06-26 09:58:40,734 Stage-1 map = 100%,  reduce = 90%, Cumulative CPU 43.27 sec
  93. 2013-06-26 09:58:41,741 Stage-1 map = 100%,  reduce = 91%, Cumulative CPU 43.27 sec
  94. 2013-06-26 09:58:42,747 Stage-1 map = 100%,  reduce = 91%, Cumulative CPU 43.27 sec
  95. 2013-06-26 09:58:43,754 Stage-1 map = 100%,  reduce = 91%, Cumulative CPU 43.27 sec
  96. 2013-06-26 09:58:44,760 Stage-1 map = 100%,  reduce = 92%, Cumulative CPU 43.27 sec
  97. 2013-06-26 09:58:45,767 Stage-1 map = 100%,  reduce = 92%, Cumulative CPU 43.27 sec
  98. 2013-06-26 09:58:46,773 Stage-1 map = 100%,  reduce = 92%, Cumulative CPU 43.27 sec
  99. 2013-06-26 09:58:47,780 Stage-1 map = 100%,  reduce = 93%, Cumulative CPU 43.27 sec
  100. 2013-06-26 09:58:48,786 Stage-1 map = 100%,  reduce = 93%, Cumulative CPU 43.27 sec
  101. 2013-06-26 09:58:49,791 Stage-1 map = 100%,  reduce = 93%, Cumulative CPU 43.27 sec
  102. 2013-06-26 09:58:50,802 Stage-1 map = 100%,  reduce = 94%, Cumulative CPU 43.27 sec
  103. 2013-06-26 09:58:51,807 Stage-1 map = 100%,  reduce = 94%, Cumulative CPU 43.27 sec
  104. 2013-06-26 09:58:52,814 Stage-1 map = 100%,  reduce = 94%, Cumulative CPU 43.27 sec
  105. 2013-06-26 09:58:53,820 Stage-1 map = 100%,  reduce = 95%, Cumulative CPU 43.27 sec
  106. 2013-06-26 09:58:54,826 Stage-1 map = 100%,  reduce = 95%, Cumulative CPU 43.27 sec
  107. 2013-06-26 09:58:55,834 Stage-1 map = 100%,  reduce = 95%, Cumulative CPU 43.27 sec
  108. 2013-06-26 09:58:56,841 Stage-1 map = 100%,  reduce = 96%, Cumulative CPU 43.27 sec
  109. 2013-06-26 09:58:57,847 Stage-1 map = 100%,  reduce = 96%, Cumulative CPU 43.27 sec
  110. 2013-06-26 09:58:58,853 Stage-1 map = 100%,  reduce = 96%, Cumulative CPU 43.27 sec
  111. 2013-06-26 09:58:59,861 Stage-1 map = 100%,  reduce = 97%, Cumulative CPU 43.27 sec
  112. 2013-06-26 09:59:00,869 Stage-1 map = 100%,  reduce = 97%, Cumulative CPU 43.27 sec
  113. 2013-06-26 09:59:01,876 Stage-1 map = 100%,  reduce = 97%, Cumulative CPU 43.27 sec
  114. 2013-06-26 09:59:02,881 Stage-1 map = 100%,  reduce = 99%, Cumulative CPU 43.27 sec
  115. 2013-06-26 09:59:03,887 Stage-1 map = 100%,  reduce = 99%, Cumulative CPU 43.27 sec
  116. 2013-06-26 09:59:04,893 Stage-1 map = 100%,  reduce = 99%, Cumulative CPU 43.27 sec
  117. 2013-06-26 09:59:05,906 Stage-1 map = 100%,  reduce = 99%, Cumulative CPU 43.27 sec
  118. 2013-06-26 09:59:06,912 Stage-1 map = 100%,  reduce = 99%, Cumulative CPU 43.27 sec
  119. 2013-06-26 09:59:07,925 Stage-1 map = 100%,  reduce = 100%, Cumulative CPU 99.03 sec
  120. 2013-06-26 09:59:08,932 Stage-1 map = 100%,  reduce = 100%, Cumulative CPU 99.03 sec
  121. 2013-06-26 09:59:09,938 Stage-1 map = 100%,  reduce = 100%, Cumulative CPU 99.03 sec
  122. 2013-06-26 09:59:10,948 Stage-1 map = 100%,  reduce = 100%, Cumulative CPU 99.03 sec
  123. MapReduce Total cumulative CPU time: 1 minutes 39 seconds 30 msec
  124. Ended Job = job_201306260649_0003
  125. Launching Job 2 out of 3
  126. Number of reduce tasks not specified. Estimated from input data size: 1
  127. In order to change the average load for a reducer (in bytes):
  128.   set hive.exec.reducers.bytes.per.reducer=<number>
  129. In order to limit the maximum number of reducers:
  130.   set hive.exec.reducers.max=<number>
  131. In order to set a constant number of reducers:
  132.   set mapred.reduce.tasks=<number>
  133. Starting Job = job_201306260649_0004, Tracking URL = http://namenode.com:50030/jobdetails.jsp?jobid=job_201306260649_0004
  134. Kill Command = /home/hadoop/hadoop-1.2.0/libexec/../bin/hadoop job  -kill job_201306260649_0004
  135. Hadoop job information for Stage-2: number of mappers: 1; number of reducers: 1
  136. 2013-06-26 09:59:19,107 Stage-2 map = 0%,  reduce = 0%
  137. 2013-06-26 09:59:23,132 Stage-2 map = 100%,  reduce = 0%, Cumulative CPU 0.99 sec
  138. 2013-06-26 09:59:24,137 Stage-2 map = 100%,  reduce = 0%, Cumulative CPU 0.99 sec
  139. 2013-06-26 09:59:25,142 Stage-2 map = 100%,  reduce = 0%, Cumulative CPU 0.99 sec
  140. 2013-06-26 09:59:26,148 Stage-2 map = 100%,  reduce = 0%, Cumulative CPU 0.99 sec
  141. 2013-06-26 09:59:27,157 Stage-2 map = 100%,  reduce = 0%, Cumulative CPU 0.99 sec
  142. 2013-06-26 09:59:28,166 Stage-2 map = 100%,  reduce = 0%, Cumulative CPU 0.99 sec
  143. 2013-06-26 09:59:29,178 Stage-2 map = 100%,  reduce = 0%, Cumulative CPU 0.99 sec
  144. 2013-06-26 09:59:30,187 Stage-2 map = 100%,  reduce = 0%, Cumulative CPU 0.99 sec
  145. 2013-06-26 09:59:31,200 Stage-2 map = 100%,  reduce = 0%, Cumulative CPU 0.99 sec
  146. 2013-06-26 09:59:32,211 Stage-2 map = 100%,  reduce = 33%, Cumulative CPU 0.99 sec
  147. 2013-06-26 09:59:33,225 Stage-2 map = 100%,  reduce = 33%, Cumulative CPU 0.99 sec
  148. 2013-06-26 09:59:34,236 Stage-2 map = 100%,  reduce = 100%, Cumulative CPU 3.27 sec
  149. 2013-06-26 09:59:35,242 Stage-2 map = 100%,  reduce = 100%, Cumulative CPU 3.27 sec
  150. 2013-06-26 09:59:36,247 Stage-2 map = 100%,  reduce = 100%, Cumulative CPU 3.27 sec
  151. 2013-06-26 09:59:37,253 Stage-2 map = 100%,  reduce = 100%, Cumulative CPU 3.27 sec
  152. 2013-06-26 09:59:38,267 Stage-2 map = 100%,  reduce = 100%, Cumulative CPU 3.27 sec
  153. MapReduce Total cumulative CPU time: 3 seconds 270 msec
  154. Ended Job = job_201306260649_0004
  155. Launching Job 3 out of 3
  156. Number of reduce tasks determined at compile time: 1
  157. In order to change the average load for a reducer (in bytes):
  158.   set hive.exec.reducers.bytes.per.reducer=<number>
  159. In order to limit the maximum number of reducers:
  160.   set hive.exec.reducers.max=<number>
  161. In order to set a constant number of reducers:
  162.   set mapred.reduce.tasks=<number>
  163. Starting Job = job_201306260649_0005, Tracking URL = http://namenode.com:50030/jobdetails.jsp?jobid=job_201306260649_0005
  164. Kill Command = /home/hadoop/hadoop-1.2.0/libexec/../bin/hadoop job  -kill job_201306260649_0005
  165. Hadoop job information for Stage-3: number of mappers: 1; number of reducers: 1
  166. 2013-06-26 09:59:46,788 Stage-3 map = 0%,  reduce = 0%
  167. 2013-06-26 09:59:52,817 Stage-3 map = 100%,  reduce = 0%, Cumulative CPU 1.67 sec
  168. 2013-06-26 09:59:53,824 Stage-3 map = 100%,  reduce = 0%, Cumulative CPU 1.67 sec
  169. 2013-06-26 09:59:54,835 Stage-3 map = 100%,  reduce = 0%, Cumulative CPU 1.67 sec
  170. 2013-06-26 09:59:55,840 Stage-3 map = 100%,  reduce = 0%, Cumulative CPU 1.67 sec
  171. 2013-06-26 09:59:56,851 Stage-3 map = 100%,  reduce = 0%, Cumulative CPU 1.67 sec
  172. 2013-06-26 09:59:57,865 Stage-3 map = 100%,  reduce = 0%, Cumulative CPU 1.67 sec
  173. 2013-06-26 09:59:58,874 Stage-3 map = 100%,  reduce = 0%, Cumulative CPU 1.67 sec
  174. 2013-06-26 09:59:59,884 Stage-3 map = 100%,  reduce = 0%, Cumulative CPU 1.67 sec
  175. 2013-06-26 10:00:00,890 Stage-3 map = 100%,  reduce = 0%, Cumulative CPU 1.67 sec
  176. 2013-06-26 10:00:01,896 Stage-3 map = 100%,  reduce = 33%, Cumulative CPU 1.67 sec
  177. 2013-06-26 10:00:02,905 Stage-3 map = 100%,  reduce = 100%, Cumulative CPU 3.48 sec
  178. 2013-06-26 10:00:03,910 Stage-3 map = 100%,  reduce = 100%, Cumulative CPU 3.48 sec
  179. 2013-06-26 10:00:04,915 Stage-3 map = 100%,  reduce = 100%, Cumulative CPU 3.48 sec
  180. 2013-06-26 10:00:05,921 Stage-3 map = 100%,  reduce = 100%, Cumulative CPU 3.48 sec
  181. 2013-06-26 10:00:06,929 Stage-3 map = 100%,  reduce = 100%, Cumulative CPU 3.48 sec
  182. MapReduce Total cumulative CPU time: 3 seconds 480 msec
  183. Ended Job = job_201306260649_0005
  184. MapReduce Jobs Launched:
  185. Job 0: Map: 2  Reduce: 1   Cumulative CPU: 99.03 sec   HDFS Read: 6771646 HDFS Write: 541 SUCCESS
  186. Job 1: Map: 1  Reduce: 1   Cumulative CPU: 3.27 sec   HDFS Read: 1002 HDFS Write: 541 SUCCESS
  187. Job 2: Map: 1  Reduce: 1   Cumulative CPU: 3.48 sec   HDFS Read: 1002 HDFS Write: 199 SUCCESS
  188. Total MapReduce CPU Time Spent: 1 minutes 45 seconds 780 msec
  189. OK
  190. Kern    36
  191. San Bernardino  35
  192. Imperial        28
  193. Inyo    20
  194. Los Angeles     18
  195. Monterey        14
  196. Riverside       14
  197. Santa Clara     12
  198. Fresno  11
  199. San Benito      11
  200. San Diego       7
  201. Santa Cruz      5
  202. San Luis Obispo 3
  203. Ventura 3
  204. Orange  2
  205. San Mateo       1
  206. Time taken: 183.06 seconds, Fetched: 16 row(s)

从上面的信息我们可以看出,执行这个SQL语句是产生了三个job,每个job都有map和reduce的进程,对Esri提供的小数据在hadoop架构下进行分析,使用了183s,这样印证了hadoop在执行小数据量的局限性。这也说明了,什么样的技术需要在什么样的场景下适用,有点英雄无用武之地的感觉。扩展:如果从事电信或者电力GIS行业的技术人员看完这个一点都不陌生,因为这正是他们习惯的开发模式,类似于ArcSDE的SQL操作ST_Geometry,他们习惯于直接在数据库里面使用SQL语句,使用SDE提供的关系操作符,那么以上使用的HIVE就是一个类SQL的方式,而且相关的操作符与SQL操作基本类似,如果这些行业数据量非常大而且分析较为复杂,不妨考虑一下这种模式。

同样,Esri也提供了基于Hadoop的可视化界面操作工具GP工具,这个工具提供的功能也比较简单

下载地址:https://github.com/Esri/geoprocessing-tools-for-hadoop

1:启用WebHDFS
在jobtacker机器上的hdfs-site.xml配置文件添加如下信息
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
2:部署GP工具包里面的requests和webhdfs的python包
将这两个文件夹拷贝到python的site-packages文件夹里面
C:\Python27\ArcGIS10.1\Lib\site-packages

具体使用可以参考提供的帮助参考。

http://blog.csdn.net/linghe301/article/details/9196713



Viewing all articles
Browse latest Browse all 764

Trending Articles