pySpark读写MongoDB

最新想对mongo中一个上亿的大collection进行操作,做一些数据分析,发现使用find()对表进行轮询是真的慢啊,想起使用spark进行数据处理,这里记录一下pyspark对mongo的操作,走了一些小坑。

内容比较简单,直接上代码:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""

@Time    : 2021/6/16 9:20
@Author  : MaCan
@Mail    : ma_cancan@163.com
@File    : mongo_data_process.py
"""

from __future__ import absolute_import
from __future__ import division
from __future__ import print_function

import os
import re
from pyspark import SparkContext, SparkConf
from pyspark.sql import SparkSession


if __name__ == '__main__':
    conf = SparkConf().setAppName('text_trans').setMaster("local[*]")
    my_spark = SparkSession.builder\
        .config(conf=conf) \
        .config("spark.mongodb.input.uri", "mongodb://HOST:PORT/DB.COLLECTION") \
        .config("spark.mongodb.output.uri", "mongodb://HOST:PORT/DB.COLLECTION") \
        .config("spark.jars.packages", "org.mongodb.spark:mongo-spark-connector_2.11:2.3.5")         \
        .getOrCreate()

    data = my_spark.read\
        .format('mongo')\
        .load()\
        .select('url', 'keywords_url')\
        .rdd\
	## 写自己的业务逻辑业务逻辑

有几点需要注意一下:

  • config 中spark.mongodb.input.uri 对应的value值按照自己mongo服务的实际情况写。
  • 我使用的是pyspakr==2.3.2
  • mongo的jar驱动版本号需要对应,不然会报错。
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值