4000-520-616
欢迎来到免疫在线!(蚂蚁淘生物旗下平台)  请登录 |  免费注册 |  询价篮
主营:原厂直采,平行进口,授权代理(蚂蚁淘为您服务)
咨询热线电话
4000-520-616
当前位置: 首页 > 新闻动态 >
新闻详情
...可扩展开发的SuperMap iObjects Java for Spark - 2017年12月...
来自 : magazine.supermap.com/view-100 发布时间:2021-03-24
val resultRDD = pointRDD.summarize(regionRDD, Array(FieldStatistics( LID , StatisticsMode.Max, LID_ Max )), Operator.RelContain)

提取列

使用 FeatureRDD 提供的 select 函数,可以选择指定的一列或多列属性,构造一个新的 FeatureRDD :

val selFeatureRDD = featureRDD. select(Array( LID , Name ))

追加列

使用FeatureRDD 提供的 join 函数,可以将一个FeatureRDD 中的属性值追加到当前 FeatureRDD 中,在追加时,如果不设置要素连接字段,则会默认使用要素的 featureID 作为连接字段:

// 指定 LID 字段为要素连接字段

val resultRDD2 = featureRDD.join(at tributeRDD, Map( Name - ResultName ), Some( LID ), Some( LID ))

5.应用案例

某省的通信运营商具有大量的(百亿级规模)手机信令数据,数据是csv文本格式,且由于体量巨大,存储在HDFS之上。另有全省的通信基站数据(千万级规模),存储在UDB数据源汇总。希望通过Spark扩展模块统计分析每个基站邻近的信令数目,用于优化基站部署,可以通过以下步骤进行分析:

//设置job的名字

val conf = new SparkConf().setAppName( ExamplePhone )

//构建Spark上下文

val sc = new SparkContext(conf)

//读取HDFS上的信令数据

val phoneRDD = SimpleCSVReader.read(sc, hdfs:// bigdata:9000/home/phone.csv )

//读取UDB中的基站数据

val stationRDD = SDXReader.readFromUDB(sc, / home/station.udb , station )

//构建基站的2公里范围缓冲区

val bufferRDD = stationRDD.buffer(2.0, DistanceUnit. Kilometer, BufferEnd.Round)

//使用缓冲区进行聚合分析,统计缓冲区内的信令数目

val statField = FieldS ta tistics( , StatisticsMode. RecordCount, PhoneCount )

val resultRDD = phoneRDD.summarize(bufferRDD, Array(statField), Operator.RelContain)

//保存结果

SDXWriter.writeToUDB(resultRDD, /home/result.udb , result )

//终止Spark上下文

sc.stop()

如上所述,SuperMap iObjects Java for Spark 9D版本提供了多种数据来源的读取与写入支持,并在数据读取之后,可以进行各种空间处理和分析。更为重要的是,组件产品的SDK模式可以支持用户根据自身业务需求,进行灵活的功能组织和二次开发,让用户低成本的使用Spark这一优秀的分布式大数据技术引擎进行 GIS开发。

本文链接: http://superspark.immuno-online.com/view-681768.html

发布于 : 2021-03-24 阅读(0)