PolarDB是阿里巴巴自主研发的下一代关系型分布式云原生数据库。阿里云自研Ganos时空引擎提供一系列的数据类型、函数和存储过程,用于在云原生关系型分布式数据库PolarDB中对空间/时空数据进行高效的存储、索引、查询和分析计算。DLA Ganos兼容PolarDB Ganos数据访问接口,可直接加载PolarDB Ganos中的矢量数据。
本文以全球船舶轨迹AIS数据集为例,展示如何利用DLA Ganos加载PolarDB Ganos中的矢量数据。
- 始化Spark环境:
//初始化SparkSession val spark = SparkSession.builder .appName("Simple Application") .config("spark.serializer", "org.apache.spark.serializer.KryoSerializer") .config("spark.sql.crossJoin.enabled", "true") .config("spark.kryo.registrator", classOf[GanosSparkKryoRegistrator].getName) .getOrCreate() import spark.implicits._ //SparkSession加载JTS包用于处理时空数据 spark.withJTS val sc = spark.sparkContext
- 加载数据:
- Spark format方式:
//配置链接参数 val dsParams: JMap[String, String] = Map( "host" -> "PolarDB URL地址", "polardb.ganos" -> "true", "dbtype"->"polardb", "port"->"PolarDB接口", "schema"->"public", "database"->"数据库名称", "user"->"用户名", "passwd"->"密码") //加载AIS数据源 df = spark.read.format("ganos-geometry") .options(dsParams) .option("ganos.feature", "AIS") .load() df.show
- Spark DataFrame API方式:
val layer=spark.read.ganos.polardbGeometry(dsParams) layer.show
- Spark format方式:
- 输出结果: