Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >GeoSpark---ST_Area的使用

GeoSpark---ST_Area的使用

作者头像
用户1483438
发布于 2022-01-02 04:39:12
发布于 2022-01-02 04:39:12
34900
代码可运行
举报
文章被收录于专栏:大数据共享大数据共享
运行总次数:0
代码可运行

GeoSpark计算某个区域的面积:

测试数据如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
10.5,32.11,30.50,60.21,33.50,60.21,10.5,32.11,china1
9.51,30.11,32.50,62.21,34.50,62.21,9.51,30.11,china2
11.5,32.11,31.50,64.21,33.50,64.21,11.5,32.11,china3
10.5,31.16,32.51,63.21,35.51,63.21,10.5,31.16,china4
11.5,32.11,30.50,59.21,33.50,59.21,11.5,32.11,china5

测试代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package txt_demo

import GeoSpark.geoRangeQueryForPolygon.createPolygonRDD
import org.apache.spark.{SparkConf, SparkContext}
import org.apache.spark.serializer.KryoSerializer
import org.apache.spark.sql.SparkSession
import org.datasyslab.geospark.enums.FileDataSplitter
import org.datasyslab.geospark.serde.GeoSparkKryoRegistrator
import org.datasyslab.geospark.spatialRDD.PolygonRDD
import org.datasyslab.geosparksql.utils.{Adapter, GeoSparkSQLRegistrator}
import org.datasyslab.geosparkviz.core.Serde.GeoSparkVizKryoRegistrator

object area_demo {
  def main(args: Array[String]): Unit = {
    val conf = new SparkConf().
      setAppName("SpatialRangeQueryApp").setMaster("local[*]").
      set("spark.serializer", classOf[KryoSerializer].getName).
      set("spark.kryo.registrator", classOf[GeoSparkKryoRegistrator].getName)
    implicit val sc = new SparkContext(conf)

    var sparkSession = SparkSession.builder()
      .master("local[*]") // Delete this if run in cluster mode
      .appName("readTestScala") // Change this to a proper name
      // Enable GeoSpark custom Kryo serializer
      .config("spark.serializer", classOf[KryoSerializer].getName)
      .config("spark.kryo.registrator", classOf[GeoSparkKryoRegistrator].getName)
      .config("spark.serializer", classOf[KryoSerializer].getName)
      .config("spark.kryo.registrator", classOf[GeoSparkVizKryoRegistrator].getName)
      .getOrCreate()

    GeoSparkSQLRegistrator.registerAll(sparkSession)

    val polygonRDD = createPolygonRDD
    polygonRDD.rawSpatialRDD.rdd.collect().foreach(println(_))

    val spatialDf = Adapter.toDf(polygonRDD,sparkSession)
    spatialDf.printSchema()
    spatialDf.show()
    spatialDf.createOrReplaceTempView("p_view")
    val p_view = sparkSession.sql(""" select _c1,ST_GeomFromWKT(p_view.geometry) as area from p_view """)
    p_view.show(truncate = false)

    p_view.createOrReplaceTempView("area_view")
    val areaDf = sparkSession.sql(""" select _c1,ST_Area(area_view.area) from area_view """)
    areaDf.show(truncate = false)

  }

  def createPolygonRDD(implicit sc:SparkContext):PolygonRDD={
    val polygonRDDInputLocation = "D:\\idea\\demo_spark\\es_demo\\src\\data\\area.csv"
    val polygonRDDStartOffset = 0
    val polygonRDDEndOffset = 7
    val polygonRDDSplitter = FileDataSplitter.CSV // or use  FileDataSplitter.TSV
    val carryOtherAttributes = true
    val objectRDD = new PolygonRDD(sc, polygonRDDInputLocation, polygonRDDStartOffset, polygonRDDEndOffset, polygonRDDSplitter, carryOtherAttributes)
    objectRDD
  }
}

测试结果如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
+------+------------------+
|_c1   |st_area(area)     |
+------+------------------+
|china1|42.150000000000034|
|china2|32.10000000000002 |
|china3|32.099999999999966|
|china4|48.07499999999999 |
|china5|40.650000000000034|
+------+------------------+

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
RDD序列化
此时运行:会有问题吗? 结果没有:其原因是因为x属于局部变量,可以直接进行序列化。而放到外部,那么就需要与SerializableRDD关联,序列化x变量前肯定要序列化SerializableRDD,否则就会报错。
用户1483438
2022/05/06
5110
Spark调优
因为Spark是内存当中的计算框架,集群中的任何资源都会让它处于瓶颈,CPU、内存、网络带宽。通常,内存足够的情况之下,网络带宽是瓶颈,这时我们就需要进行一些调优,比如用一种序列化的方式来存储RDD来减少内存使用,这边文章就讲两种方式,数据序列化和内存调优,接下来我们会分几个主题来谈论这个调优问题。 1、数据序列化 (1) Spark默认是使用Java的ObjectOutputStream框架,它支持所有的继承于java.io.Serializable序列化,如果想要进行调优的话,可以通过继承java.io
岑玉海
2018/02/28
1.1K0
Spark Core快速入门系列(5) | RDD 中函数的传递
我们进行 Spark 进行编程的时候, 初始化工作是在 driver端完成的, 而实际的运行程序是在executor端进行的. 所以就涉及到了进程间的通讯, 数据是需要序列化的.
不温卜火
2020/10/28
7000
Spark Core快速入门系列(5) |  RDD 中函数的传递
SparkRDD转DataSet/DataFrame的一个深坑
原需求:希望在map函数中将每一个rdd转为DataSet或者DataFrame。
王知无-import_bigdata
2019/10/23
1.2K0
Spark SQL DataFrame与RDD交互
Spark SQL 支持自动将 JavaBeans 的 RDD 转换为 DataFrame。使用反射获取的 BeanInfo 定义了表的 schema。目前为止,Spark SQL 还不支持包含 Map 字段的 JavaBean。但是支持嵌套的 JavaBeans,List 以及 Array 字段。你可以通过创建一个实现 Serializable 的类并为其所有字段设置 getter 和 setter 方法来创建一个 JavaBean。
smartsi
2019/08/07
1.8K0
Spark读写Hbase中的数据
然而并没有什么乱用,发现一个问题,就是说,在RDD取值与写入HBASE的时候,引入外部变量无法序列化。。。。。。网上很多说法是说extends Serializable ,可是尝试无效。Count()是可以获取到,但是如果我要在configuration中set列,然后进行查询就会报错了。暂时各种办法尝试无果,还在想办法,也不明原因。
用户3003813
2018/09/06
1.7K0
Spark读写Hbase中的数据
SparkSql之编程方式
SparkSession是Spark最新的SQL查询起始点,实质上是SQLContext和HiveContext的组合,所以在SQLContext和HiveContext上可用的API在SparkSession上同样是可以使用的。
用户1483438
2022/07/26
9530
2021年大数据Spark(五十一):Structured Streaming 物联网设备数据分析
在物联网时代,大量的感知器每天都在收集并产生着涉及各个领域的数据。物联网提供源源不断的数据流,使实时数据分析成为分析数据的理想工具。
Lansonli
2021/10/11
9500
Spark读写HBase之使用Spark自带的API以及使用Bulk Load将大量数据导入HBase
以上两个算子分别是基于Hadoop新版API和hadoop旧版API实现的,大部分代码都一样,需要注意的是新版API使用中Job类,旧版API使用JobConf类,另外导包的时候新版的相关jar包在org.apache.hadoop.mapreduce下,而旧版的相关jar包在org.apache.hadoop.mapred下
CoderJed
2018/09/13
3.3K0
geotrellis使用(三十八)COG 写入和读取
前言 上一篇中简单介绍了 COG 的概念和 Geotrellis 中引入 COG 的原因及简单的原理,本文为大家介绍如何在 Geotrellis 中使用 COG 来写入和读取 GeoTIFF数据。 一、写入数据——ETL 1.1 实现方案 其实这与之前的普通 ETL 操作在概念上是相似的,都是将原始数据转换成系统能用的数据的过程,这是宽泛的 ETL 的定义。在 Geotrellis 中实现很简单,与之前代码基本一致,只要切换一下 writer 类型以及最后建立金字塔额时候略有不同。实现方案如下: val i
魏守峰
2018/05/02
1.1K0
数据湖(五):Hudi与Hive集成
Hudi与Hive集成原理是通过代码方式将数据写入到HDFS目录中,那么同时映射Hive表,让Hive表映射的数据对应到此路径上,这时Hudi需要通过JDBC方式连接Hive进行元数据操作,这时需要配置HiveServer2。
Lansonli
2022/05/31
2.8K0
数据湖(五):Hudi与Hive集成
数据湖(四):Hudi与Spark整合
默认Spark操作Hudi使用表类型为Copy On Write模式。Hudi与Spark整合时有很多参数配置,可以参照https://hudi.apache.org/docs/configurations.html配置项来查询,此外,整合时有几个需要注意的点,如下:
Lansonli
2022/05/30
3.3K2
数据湖(四):Hudi与Spark整合
「Hudi系列」Apache Hudi入门指南 | SparkSQL+Hive+Presto集成
hive 查询hudi 数据主要是在hive中建立外部表数据路径指向hdfs 路径,同时hudi 重写了inputformat 和outpurtformat。因为hudi 在读的数据的时候会读元数据来决定我要加载那些parquet文件,而在写的时候会写入新的元数据信息到hdfs路径下。所以hive 要集成hudi 查询要把编译的jar 包放到HIVE-HOME/lib 下面。否则查询时找不到inputformat和outputformat的类。
王知无-import_bigdata
2022/03/11
2.7K0
「Hudi系列」Apache Hudi入门指南 | SparkSQL+Hive+Presto集成
【推荐系统算法实战】 ALS 矩阵分解算法
ALS的矩阵分解算法常应用于推荐系统中,将用户(user)对商品(item)的评分矩阵,分解为用户对商品隐含特征的偏好矩阵,和商品在隐含特征上的映射矩阵。
一个会写诗的程序员
2019/12/30
3.5K0
【推荐系统算法实战】 ALS 矩阵分解算法
在AWS Glue中使用Apache Hudi
AWS Glue是Amazon Web Services(AWS)云平台推出的一款无服务器(Serverless)的大数据分析服务。对于不了解该产品的读者来说,可以用一句话概括其实质:Glue是一个无服务器的全托管的Spark运行环境,只需提供Spark程序代码即可运行Spark作业,无需维护集群。
ApacheHudi
2021/04/29
1.7K0
在AWS Glue中使用Apache Hudi
Spark踩坑记:Spark Streaming+kafka应用及调优
该文介绍了如何利用Spark Streaming进行实时数据处理,包括批处理和流处理。文章首先介绍了Spark Streaming的基本概念、适用场景、工作原理和关键概念,然后详细讲解了如何利用Spark Streaming进行批处理和流处理,以及如何处理Kafka等分布式消息队列。最后,作者提供了一些优化建议,以提升Spark Streaming的性能和稳定性。
肖力涛
2017/04/10
9.3K1
Spark踩坑记:Spark Streaming+kafka应用及调优
解锁Apache Hudi删除记录新姿势
在0.5.1版本之前,用户若想删除某条记录,可以使用Spark DataSource,并将 DataSourceWriteOptions.PAYLOAD_CLASS_OPT_KEY设置为 EmptyHoodieRecordPayload.class.getName,便可删除指定记录,在Hudi新发布的0.5.1版本,可不使用上述配置项删除记录,而提供三种方式删除记录:Hudi API,Spark DataSource,DeltaStreamer,下面逐一介绍如何使用。
ApacheHudi
2021/04/13
2.1K0
Apache Hudi 入门学习总结
学习和使用Hudi近一年了,由于之前忙于工作和学习,没时间总结,现在从头开始总结一下,先从入门开始
小明互联网技术分享社区
2022/10/31
1.5K0
Apache Hudi入门指南(含代码示例)
hudi详细介绍见hudi官网 http://hudi.apache.org/cn/docs/0.5.0-quick-start-guide.html
ApacheHudi
2021/04/13
3.4K0
Spark Core源码精读计划12 | Spark序列化及压缩机制浅析
《Spark Core源码精读计划3 | SparkContext辅助属性及后初始化》
大数据真好玩
2019/08/14
7860
相关推荐
RDD序列化
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验