从 SQL 服务器到 MongoDB Atlas 的 ETL 管道
ETL pipeline from SQL Server to MongoDB Atlas
我需要您对如何建立从 SQL 服务器到 MongoDB Atlas 云的数据管道的意见。在这个管道中,我做了很多复杂的转换甚至分析和故障检测的任务,这些任务需要将当前数据和以前处理过的数据进行比较。有一些误差标准只能在将新数据与以前处理的数据进行比较时才能计算出来。
因此,管道不仅仅是单向的。是不是在AWS上用Kinesis-Lambda pipeline做还是在我们公司的服务器上用Kafka和Spark做比较好然后上传到云端?在这两种情况下,我的转换单元如何从目标读取数据。
我在下图中描述了我的两个想法。
我会为所有人使用 spark。从 sql 服务器读取,进行转换并写入 mongo(sql 服务器 --> spark --> mongoDB):
#SQL server
df = (
spark
.read
.format('jdbc')
.option("driver", "com.microsoft.sqlserver.jdbc.SQLServerDriver")
.option('url', 'jdbc url')
.option('user', user)
.option('password', password)
.option('dbtable', 'schema.table')
.option('tempdir', 's3://....')
.option('forward_spark_s3_credentials', 'true')
.load()
)
# Mongo
df = spark.read.format("mongo").option("uri","mongodb://127.0.0.1/people.contacts").load()
df.write.format("mongo").option("uri","mongodb://127.0.0.1/people.contacts").mode("append").save()
我需要您对如何建立从 SQL 服务器到 MongoDB Atlas 云的数据管道的意见。在这个管道中,我做了很多复杂的转换甚至分析和故障检测的任务,这些任务需要将当前数据和以前处理过的数据进行比较。有一些误差标准只能在将新数据与以前处理的数据进行比较时才能计算出来。 因此,管道不仅仅是单向的。是不是在AWS上用Kinesis-Lambda pipeline做还是在我们公司的服务器上用Kafka和Spark做比较好然后上传到云端?在这两种情况下,我的转换单元如何从目标读取数据。
我在下图中描述了我的两个想法。
我会为所有人使用 spark。从 sql 服务器读取,进行转换并写入 mongo(sql 服务器 --> spark --> mongoDB):
#SQL server
df = (
spark
.read
.format('jdbc')
.option("driver", "com.microsoft.sqlserver.jdbc.SQLServerDriver")
.option('url', 'jdbc url')
.option('user', user)
.option('password', password)
.option('dbtable', 'schema.table')
.option('tempdir', 's3://....')
.option('forward_spark_s3_credentials', 'true')
.load()
)
# Mongo
df = spark.read.format("mongo").option("uri","mongodb://127.0.0.1/people.contacts").load()
df.write.format("mongo").option("uri","mongodb://127.0.0.1/people.contacts").mode("append").save()