本文介绍如何使用Databricks DDI访问MongoDB数据源数据。
前提条件
通过主账号登录阿里云 Databricks控制台。
已创建MongoDB实例。
已创建DDI集群,具体请参见DDI集群创建。
创建集群并通过knox账号访问NoteBook。
使用Databricks 读写MongoDB数据
MongoDB数据源与DDI网络打通
登录MongoDB管理控制台云数据库MongoDB管理控制台
点击上部选择实例所在region
点击实例ID进入实例详情页面
查看基本信息找到对应的VPV和VSwitch
登录到databricks数据洞察集群阿里云Databricks控制台
选择集群所在region进入集群列表
点击集群实例进入集群详情页面
点击详情页面上方数据源页签进入数据源页面点击添加
选择通用网络,选择对应的VPC和VSwith点击下一步点击确认等待创建成功
添加集群ENI IP至MongoDB数据库白名单(登录MongoDB云产品管理控制台->白名单设置)
读写MongoDB数据(非SSL)
表读取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)
使用创建Delta表的方式读取MongoDB数据源
创建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' )
向表中插入数据
%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")
SQL查询
%sql select * from mongodb_test limit 2;
读写MongoDB数据源(开启SSL)
MongoDB 数据库SSL证书库jks下载
说明阿里云MongoDB证书下载,可以到云数据库MongoDB管控进行下载,证书库的默认密码:apsaradb
将jks证书库分发到DDI所有服务器节点(此步骤可以联系DDI开发运维人员协助)
在notebook读写数据
引入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=****
执行代码访问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)
文档内容是否对您有帮助?