xiangri

无论前路渺茫,依旧尚存良知.

  • 主页
  • 杂记
所有文章 关于我

xiangri

无论前路渺茫,依旧尚存良知.

  • 主页
  • 杂记

Spark连接MongoDB--Python版本

2017-05-11

最近发现Spark + MongoDB是个非常cool的组合,详见MongoDB + Spark: 完整的大数据解决方案

Spark连接MongoDB需要连接器,主要有官方和第三方两种,但是官方的连接器目前(写本文时)好像只支持Spark 1.6.x(我在2.1上折腾了几天都编译失败,这里需要注意下)

  • 官方连接器
  • mongodb官方文档
  • 第三方连接器

连接器详细的安装看上面连接的README就行了,第一次执行时会下载相应的工具包,但是国内”复杂网络环境”有可能会在build的时候失败(我就失败了好多次…),我参考的文档里 作者提供了下载好的。

  • 官方
  • 第三方
  • 下载解压后将cache、jar目录拷贝到~/.ivy2目录下即可。

选择器的选择

  • 第三方连接器的功能比官方连接器的要好一点,支持在原有表的基础上做更新。
  • 官方连接器的性能比第三方连接器的好一点,官方连接器和Spark有着相同的条件下推原则,会把过滤条件下推到MongoDB去执行。

选择器的使用

1
2
3
4
5
#官方连接器运行:
$spark-submit --packages org.mongodb.spark:mongo-spark-connector_2.10:1.1.0 text.py
#第三方连接器运行:
$spark-submit --packages com.stratio.datasource:spark-mongodb_2.10:0.11.2 text.py

Spark-MongoDB的连接

我使用的官方连接器,连接很简单:

1
2
3
4
5
6
7
8
9
conf = pyspark.SparkConf().setAppName("test").setMaster("local")
sc = pyspark.SparkContext(conf=conf)
sqls = SQLContext(sc)
#database--数据库db
#collection--数据库表/集合
test_collection = sqls.read.format("com.mongodb.spark.sql")\
.options(uri="mongodb://127.0.0.1:27017",database="runoob",collection="col").load()
print(test_collection.first())

更具体的参官方APISpark Connector Python Guide
本文参考的文档写的非常棒spark处理mongodb数据(python版)

赏

谢谢你请我吃糖果

支付宝
微信
  • Python
  • Spark
  • MongoDB

扫一扫,分享到微信

微信分享二维码
编译mongo-spark出现的问题
© 2017 xiangri
Hexo Theme Yilia by Litten
  • 所有文章
  • 关于我

tag:

  • Linux
  • ACM-ICPC
  • 杂记
  • Navicat
  • Oracle
  • Error
  • Python
  • Spark
  • Ubuntu
  • Anaconda
  • Hadoop
  • MongoDB
  • dot
  • 绘图
  • hexo-shell-Markdown
  • secureCRT
  • 虚拟机
  • ssh
  • 爬虫

    缺失模块。
    1、在博客根目录(注意不是yilia根目录)执行以下命令:
    npm i hexo-generator-json-content --save

    2、在根目录_config.yml里添加配置:

      jsonContent:
        meta: false
        pages: false
        posts:
          title: true
          date: true
          path: true
          text: true
          raw: false
          content: false
          slug: false
          updated: false
          comments: false
          link: false
          permalink: false
          excerpt: false
          categories: false
          tags: true
    

XiangRi.
Current Undergraduate,
Software Engineering.

I love life.
I love pretty girls.
I love poetry and future.