MongoDB

本文介绍如何使用Databricks DDI访问MongoDB数据源数据。

前提条件

使用Databricks 读写MongoDB数据

MongoDB数据源与DDI网络打通

  1. 登录MongoDB管理控制台云数据库MongoDB管理控制台

  2. 点击上部选择实例所在region

  3. 点击实例ID进入实例详情页面

  4. 查看基本信息找到对应的VPV和VSwitchdata

  5. 登录到databricks数据洞察集群阿里云Databricks控制台

  6. 选择集群所在region进入集群列表

  7. 点击集群实例进入集群详情页面

  8. 点击详情页面上方数据源页签进入数据源页面点击添加data

  9. 选择通用网络,选择对应的VPC和VSwith点击下一步点击确认等待创建成功datadata

  10. 添加集群ENI IP至MongoDB数据库白名单(登录MongoDB云产品管理控制台->白名单设置)

    data

读写MongoDB数据(非SSL)

  1. 表读取mongodb数据

    %spark
    //读取mongodb数据
    val mongoDF = spark.read.format("com.mongodb.spark.sql").option("uri", 'your connection uri').option("database","your database").option("collection", "your collection").load()
    mongoDF.show(2)
    data
  2. 使用创建Delta表的方式读取MongoDB数据源

    1. 创建Delta表

      %sql
      create database  if not exists mongodb;
      use mongodb;
      create table mongodb_test(
          id string,
          name string
      )using com.mongodb.spark.sql
      options (
      uri 'your connection uri',
      database 'your database',
      collection 'your collection'
      )

    2. 向表中插入数据

      %spark
      //定义内部类
      case class Student(id: String, name: String)
      //创建自定义数据源DataFrame
      val df =  spark.createDataFrame(sc.parallelize(List(Student("2172","Torcuato"), Student("3142", "Rosalinda"))))
      //数据写入到mongodb
      df.write.format("com.mongodb.spark.sql").mode("append").saveAsTable("mongodb_test")

    3. SQL查询

      %sql
      select * from mongodb_test limit 2;
      data

读写MongoDB数据源(开启SSL)

  1. MongoDB 数据库SSL证书库jks下载

    说明

    1. 阿里云MongoDB证书下载,可以到云数据库MongoDB管控进行下载,证书库的默认密码:apsaradb

    data
  2. 将jks证书库分发到DDI所有服务器节点(此步骤可以联系DDI开发运维人员协助)

  3. 在notebook读写数据

    1. 引入spark.conf调用jks证书库,将证书加载到spark-session中。

      %spark.conf
      spark.executor.extraJavaOptions -Djavax.net.ssl.trustStore=/home/hadoop/cer/ApsaraDB-CA-Chain.jks  -Djavax.net.ssl.trustStorePassword=****
      spark.driver.extraJavaOptions -Djavax.net.ssl.trustStore=/home/hadoop/cer/ApsaraDB-CA-Chain.jks -Djavax.net.ssl.trustStorePassword=****

    2. 执行代码访问MongoDB数据源

      %spark
      val mongoDF = spark.read.format("com.mongodb.spark.sql").option("uri", "mongodb://root:***@dds-******.mongodb.rds.aliyuncs.com:3717/admin?ssl=true&tlsAllowInvalidHostnames=true").option("collection", "****").load()
      mongoDF.show(1)
      data