python - 将 pyspark 数据帧保存到 mongodb 会出错
问题描述
我尝试使用 google cloud dataproc 集群将 pyspark 数据帧保存到 mongodb,但它一直向我显示一条错误消息。我正在使用 spark2.4.7
和 python3.7
以及 mongoDB spark 连接器2.4.3
这是我的代码:
spark = SparkSession.builder\
.master("yarn")\
.appName("demo")\
.config("spark.mongodb.input.uri",
"mongodb+srv://my_host:27017/people_db") \
.config("spark.mongodb.output.uri",
"mongodb+srv://my_host:27017/people_db") \
.config('spark.jars.packages',
'org.mongodb.spark:mongo-spark-connector_2.12-2.4.3')\
.getOrCreate()
df = spark.read\
.format('csv')\
.options(header=True)\
.load(csv_path)
# ----------Some data processing -----------
df.write\ #This is the block of code that shows the error
.format("com.mongodb.spark.sql.DefaultSource")\
.mode("append")\
.option("collection", "people")\
.save()
这是错误消息:
解决方案
mongo 驱动程序 jar 不包含在类路径中。两个 mongo jars(连接器和驱动程序)在 spark/jars 路径中是必不可少的。通过参考下面的链接,我能够在本地运行,也可以作为 dataproc 作业运行。Mongo 连接器:2.12_3.0.1 Mongo java 驱动程序:3.12 Spark:3.0.2
推荐阅读
- parsing - 使用camlp5导入Pcaml语法扩展OCaml的打印机
- python - 如何在 Seaborn clustermap 中分别绘制图例
- c# - 在视图中重新加载模型
- python - 仅使用 python 重命名特定子文件夹中的文件
- javascript - 如何使用 vba/ui-path/rest api 使用来自 Skype for business 的电子邮件 ID 获取人员状态?
- python - 提取数据限制 - Selenium 和 BS4
- c# - 继承类是否必须使用与其基类相同的参数才能进行依赖注入?
- javascript - 未在另一个函数中定义的函数
- javascript - Select2 在数据加载后立即关闭
- conda - conda 与 linux 环境模块的用例