云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

云服务器_谷歌云服务器多少钱一个月_免费6个月

小七 141 0

ricks地理空间数据处理

技术的发展和融合为及时准确的地理空间数据提供了一个充满活力的市场。每天数十亿的手持设备和物联网设备以及数千个机载和卫星遥感平台都会生成数百EB的位置感知数据。地理空间大数据的繁荣与机器学习的进步相结合,使整个行业的组织能够构建新的产品和能力。利用地理空间数据的地图在整个行业中广泛使用,涵盖多种使用情形,包括灾难恢复、国防和英特尔、基础设施和医疗服务。例如,许多公司提供基于无人机的本地化服务,如地图和站点检查(智能云和智能边缘参考开发)。另一个快速发展的地理空间数据产业是自动车辆。初创公司和老牌公司都在从车辆传感器收集大量高度关联的地理数据,以实现自动驾驶汽车的下一个创新(参考数据块为wejo创建移动数据生态系统的雄心提供了燃料)。零售商和政府机构也在寻求利用他们的地理空间数据。例如,步行交通分析(参考建筑步行交通洞察数据集)可以帮助确定开新店的最佳位置,或者在公共部门,改善城市规划。尽管对地理空间数据进行了所有这些投资,但仍存在一些挑战。大规模分析地理空间面临的挑战第一个挑战是如何处理流媒体和批处理应用程序的规模。地理空间数据的激增和应用程序所需的sla压倒了传统的存储和处理系统。由于数据量、速度、存储成本和严格的写操作模式等压力,客户数据多年来一直从现有的垂直缩放地理数据库溢出到数据湖中。虽然企业已经投资于地理空间数据,但很少有企业具备适当的技术架构来准备这些大型、复杂的数据集,用于下游分析。此外,考虑到高级用例通常需要缩放数据,大多数人工智能驱动的计划都无法从试验到生产。与各种空间格式的兼容性是第二个挑战。几十年来建立了许多不同的专门地理空间格式,以及可以收集位置信息的附带数据源:GeoJSON、KML、Shapefile和WKT等矢量格式光栅格式,如ESRI Grid、GeoTIFF、JPEG 2000和NITFAIS和GPS设备使用的导航标准通过JDBC/ODBC连接(如PostgreSQL/PostGIS)访问的地理数据库来自高光谱、多光谱、激光雷达和雷达平台的遥感器格式OGC web标准,如WCS、WFS、WMS和WMTS地理标记日志、图片、视频和社交媒体具有位置引用的非结构化数据在这篇博文中,我们概述了使用Databricks统一数据分析平台处理上面列出的两个主要挑战的一般方法。这是一系列关于处理大量地理空间数据的博客文章的第一部分。使用数据块缩放地理空间工作负载Databricks为全球成千上万的客户提供了一个统一的数据分析平台,用于大数据分析和机器学习。它由Apache Spark提供动力™Delta Lake和MLflow,具有广泛的第三方生态系统和可用的库集成。Databricks UDAP为生产工作负载提供企业级的安全性、支持、可靠性和性能。地理空间工作负载通常很复杂,并且没有一个库适合所有用例。虽然apachespark本身并没有提供地理空间数据类型,但是开源社区和企业已经投入了大量的精力来开发空间库,从而产生了大量的可供选择的选项。通常有三种模式可用于缩放地理空间操作,例如空间连接或最近邻:使用专门构建的库来扩展apachespark进行地理空间分析。GeoSpark、GeoMesa、geortrellis和Rasterframes是我们的客户使用的一些这样的库。这些框架通常提供多种语言绑定,比非形式化方法具有更好的可伸缩性和性能,但也可以有一个学习曲线。将GeoPandas、Geospatial Data Abstraction Library(GDAL)或Java拓扑服务(JTS)等单节点库封装在自组织用户定义函数(udf)中,以便以分布式方式处理Spark数据帧。这是在不需要大量代码重写的情况下扩展现有工作负载的最简单方法;但是,由于其本质上具有更多的提升和转换,因此它可能会带来性能缺陷。使用网格系统索引数据并利用生成的索引执行空间操作是处理非常大规模或计算受限的工作负载的常见方法。S2、GeoHex和Uber的H3就是此类网格系统的例子。栅格通过一组固定的可识别单元来近似地理特征,例如多边形或点,从而避免了昂贵的地理空间操作,从而提供了更好的缩放行为。实现者可以在固定到单一精度的网格(可能有点损失但性能更高)或具有多个精度的网格(虽然性能较差但可以减轻损失)之间进行选择。下面的例子通常是围绕纽约市出租车接送数据集展开的。具有几何图形的纽约出租车区域数据也将用作多边形集。这些数据包含了纽约市五个行政区以及社区的多边形。本笔记本将引导您完成准备和清理工作,将初始CSV文件转换为Delta Lake表,作为一个可靠和高效的数据源。我们的基本数据帧是使用数据块从Delta Lake表中读取的出租车接送数据。%斯卡拉值dfRaw=spark.read.format("delta").load("/ml/blogs/geospatial/delta/nyc-green")display(dfRaw)//显示前10列使用Databricks从Delta-Lake表读取的地理空间数据示例。使用apachespark的地理空间库进行地理空间操作在过去几年中,已经开发了几个库来扩展apachespark的地理空间分析功能。这些框架首先要以一致的方式注册常用的用户定义类型(UDT)和函数(UDF),从而减轻了用户和团队编写特别空间逻辑的负担。请注意,在这篇博文中,我们使用了几种不同的空间框架来突出各种功能。我们知道,除了突出显示的那些框架之外,还存在其他框架,您可能还希望使用Databricks来处理空间工作负载。之前,我们将基础数据加载到数据帧中。现在我们需要将纬度/经度属性转换为点几何图形。为此,我们将使用udf以分布式方式对数据帧执行操作。有关将这些框架添加到集群以及注册udf和udt的初始化调用的详细信息,请参阅博客末尾提供的笔记本。首先,我们将GeoMesa添加到我们的集群中,这个框架特别擅长处理向量数据。对于摄取,我们主要利用JTS与sparksql的集成,这允许我们轻松地转换和使用注册的JTS几何类。我们将使用函数st_makePoint在给定纬度和经度的情况下创建一个点几何对象。因为函数是一个UDF,所以我们可以直接将其应用于列。%斯卡拉值df=dfRaw.withColumn("pickup_point",st_makePoint(col("pickup_经度"),col("pickup_纬度")).withColumn("dropoff_point",st_makePoint(col("dropoff_经度"),col("dropoff_latitude"))显示(数据框选择("衰减点","衰减时间")使用udf以分布式方式对数据帧执行操作,将地理空间数据纬度/经度属性转换为点几何图形。我们还可以执行分布式空间连接,在这种情况下,使用GeoMesa提供的st_contains UDF来生成针对拾取点的所有多边形的结果连接。%斯卡拉val joinedDF=wktDF.join(df,st_contains($"the_geom",$"pick_point")显示(joinedDF.select("区域"、"自治区"、"取件点"、"取件日期时间"))例如,使用GeoMesa提供的st_包含UDF来生成所有多边形相对于拾取点的结果连接。在udf中包装单节点库除了使用专门构建的分布式空间框架外,现有的单节点库也可以封装在特别的udf中,以分布式方式对数据帧执行地理空间操作。此模式适用于所有Spark语言绑定(Scala、Java、Python、R和SQL),并且是一种利用现有工作负载的简单方法,而代码更改最少。为了演示一个单节点示例,让我们加载NYC自治区数据并定义UDF find_borough(…),以便使用geopandas将每个GPS位置分配给一个自治区。这也可以通过矢量化的UDF来实现,以获得更好的性能。%蟒蛇#用geopandas读读自治区的多边形gdf=gdp.read_文件("/dbfs/ml/blogs/geospatial/nyc_boroughs.geojson")b_gdf=sc.广播(gdf)#将geopandas数据帧广播到集群的所有节点def find_borough(纬度、经度):mgdf=b_gdf.value.apply(lambda x:xboro_name"]如果xgeometry"]。相交(点(经度、纬度))idx=mgdf.first_有效索引()返回mgdf.loc公司[idx]如果idx不是None else无find_borough_udf=udf(find_borough,StringType())现在我们可以应用UDF将一个列添加到Spark DataFrame,它为每个拾取点分配一个自治区名称。%蟒蛇#从delta读取坐标df=spark.read.format("delta").load("/ml/blogs/geospatial/delta/nyc-green")带自治区的df_=df.WITH列("皮卡区",查找"皮卡区"(col("皮卡区")、col(图