在当今数据驱动的世界中,处理和分析大量数据变得越来越重要。Databricks和MongoDB Atlas是两个强大的工具,它们可以帮助有效地管理和分析大数据。Databricks是一个基于云的分析工具,由微软云提供,使用Apache Spark进行计算。它允许用户以高效的方式结合数据、ETL(提取、转换、加载)过程和机器学习。Databricks运行在并行分布式系统上,这意味着工作负载会自动分布在多个处理器上,从而提供高可扩展性和分片,间接影响处理时间和成本的降低。
Databricks能够实时处理大量非结构化数据,促进大数据在整个分布式集群中的传播。它提供了从物联网设备、机器、文件等收集和存储原始数据的能力。Databricks集成了Apache Spark,支持在大量机器和系统上运行和扩展解决方案,使得收集的大数据可以轻松分析和处理以构建模型。它支持实时批处理,整合、清洗和规范化来自多个不同来源的数据,有助于节省存储容量并提高查询性能。此外,Databricks还支持基于SQL的分析功能,如时间序列、模式匹配等。
这个基于Spark的环境非常容易使用。它提供了使用最常用的编程语言如Python、R和SQL的选项。这些语言稍后通过API转换以与Spark交互,从而使数据处理和计算变得简单。通过连接外部数据库如MongoDB,可以再次增加其计算能力。这样,可以在短时间内处理大量数据。
MongoDB是一个开源文档数据库,构建在水平扩展架构上。它由Dwight Merriman、Eliot Horowitz和Kevin Ryan于2007年在纽约共同创立。与SQL数据库不同,MongoDB数据库中的每行数据都是一个文档,使用JSON格式化语言描述。MongoDB是一个开源文档数据库,数据对象作为单独的文档存储在集合中。每个MongoDB实例可以有多个数据库,每个数据库可以有多个集合。它提供了高性能、高可用性和自动扩展。
MongoDB提供了复制和高可用性、自动分片、服务器端JavaScript执行等功能。GridFS用于存储和检索文件。MongoDB可以控制文档结构的变化,通过模式验证来实现。使用MongoDB,可以创建二进制JSON格式(BSON)文件,这将提高效率。存储在BSON中的数据可以轻松搜索和索引,从而大大提高性能。
MongoDB Atlas是MongoDB的一个专门版本,它提供了轻松的集群形成和部署。MongoDB Atlas属于NoSQL数据库类别,而MongoDB Atlas可以主要归类为提供轻松部署集群的托管服务。它提供了强大的身份验证和加密功能,确保数据保护。MongoDB Atlas是一个完全托管的云数据库,适用于现代应用程序。与本地MongoDB相比,MongoDB Atlas提供了许多功能。MongoDB Atlas内置了MongoDB Atlas Search,使得在MongoDB数据上构建快速、相关、全文搜索功能变得容易。它不需要客户端基础设施,易于使用,易于扩展,具有强大的身份验证和加密功能,确保开发者的数据安全。
为了将Databricks与MongoDB连接,可以使用maven提供的某些包。虽然有关通过Scala驱动连接Databricks与MongoDB的教程已经存在,但它们并没有清晰地展示如何通过Python API将MongoDB Atlas与Databricks连接。以下是建立MongoDB Atlas与Databricks连接所需的先决条件。
创建一个Databricks集群。导航到集群详情页面,选择“库”标签。点击“安装新”按钮。选择“Maven”作为库源。根据Databricks运行时版本,在坐标字段中输入MongoDB Connector for Spark包值。例如:对于Databricks Runtime 7.6(包括Apache Spark 3.0.1,Scala 2.12),选择org.mongodb.spark:mongo-spark-connector_2.12:3.0.1。在包中搜索并找到支持Spark和Scala版本的包。
从库中安装Spark xl,并重新启动集群。
可以通过在Databricks的“应用”标签下启动Web终端来获取IP地址。在shell中输入ifconfig -a来获取IP地址。
在MongoDB Atlas中创建一个实例,提供用户名和密码。创建一个Atlas免费层集群。点击“连接”按钮。打开MongoDB Compass并通过字符串连接到数据库(不要忘记用密码替换字符串中的密码)。打开MongoDB Compass,通过点击“创建数据库”按钮创建一个新数据库来保存数据。通过点击“导入数据”按钮将文档作为集合导入。
为了轻松探索和操作MongoDB数据,安装MongoDB Compass。点击“没有MongoDB Compass”按钮。复制连接字符串以从MongoDB Compass连接到MongoDB Atlas集群。字符串看起来像这样:mongodb+srv://
from pyspark.sql import SparkSession
database = "cloud" # 数据库名称
collection = "millionsongs" # 集合名称
connectionString = 'mongodb+srv://user:@cluster0.9rvsi.mongodb.net/?retryWrites=true&w=majority' # 复制连接字符串
spark = SparkSession \
.builder \
.config('spark.mongodb.input.uri', connectionString) \
.config('spark.mongodb.input.uri', connectionString) \
.config('spark.jars.packages', 'org.mongodb.spark:mongo-spark-connector_2.12:3.0.1') \
.getOrCreate()
# 从MongoDB读取数据
df = spark.read \
.format("com.mongodb.spark.sql.DefaultSource") \
.option("uri", connectionString) \
.option("database", database) \
.option("collection", collection) \
.load()