Spark是最近比较火的数据处理平台,相对于Hadoop的Mapreduce(MR),既具有运行速度的优势,又打破的Hadoop MR交互性差的局限,同时,其机器学习组件MLlib可以极大的满足数据处理过程中的算法需求。

Spark采用Scala语言编写,但同时支持Scala,Python与Java做为开发语言,甚至SparkR项目的出现某种程度上支持了R语言。

MongoDB做为NoSQL比较早的实现,其文档化的存储方式,更贴切数据的表达,其自身的BSON数据格式跟JSON非常相像,是做为半结构化数据存储的选择之一。

但是现有的Spark与MongoDB的集成,大部分都局限在Java和Scala版本上,Python的实现可以参考的文章实在有限,尤其对Spark中的数据存储到MongoDB方面,也有不少坑。

1、准备工作

首先,你需要准备好Spark跟MongoDB的环境,版本的话,Spark一定要1.3.0+,这个版本推出了Spark SQL集合起来用,可以达到开发效率跟运行效率的双向提高,选择1.3以上版本是因为之前的版本有这个Issue:SPARK-5361存在。MongoDB的话,推荐3.0,参考3.0的release note。

然后,你需要准备好相应的Library:1)mongo-java-driver,选择3.0.1版本,3.1版本没有试过,理论上应该也可行;2)mongo-hadoop,不要直接去下载1.3.2版本,该版本有BUG,需要编译。

2、修改mongo-hadoop库

1)git clone https://github.com/mongodb/mongo-hadoop

2) 修改MongoRecordWriter.java文件

修改的目的是为了可以直接让dict型的数据直接存在MongoDB中,而不是以{value:dict}的方式存储,修改参看下图,实在忍不住吐槽下简书默认的编辑器, 引用,代码都没有办法高亮 :(

MongoRecordWriter.java

3)编译

官方默认的编译命令是: ./gradlew jar,编译后的文件会放在core/build/libs目录下

mongo-hadoop-core-1.3.3-SNAPSHOT.jar

3、运行

前期工作准备好之后,使用pyspark --master local[6] --driver-class-path /mongo-java-driver-3.0.1.jar --jars /mongo-hadoop-core-1.3.3-SNAPSHOT.jar,/mongo-java-driver-3.0.1.jar 运行pyspark。注意,目前测试下来,仅支持local方式运行。

运行命令

4、总结

Scala做为Spark的编写语言,目前来看,对Spark支持的最好的还是Scala,Python在数据类型的转化上还是有着不少问题,比如:Calendar类型的支持的Issue现在依然是Open的状态,参考HADOOP-193,这只是众多问题的一个,花大量的时间去填坑,而不能专注在数据处理的业务流上,也是不得不面对的问题。

spark mongo java_Spark Mongodb集成 - Python版相关推荐

  1. python编写spark程序 视频_【Python版pyspark】Spark大数据基础入门视频课程

    [注意:本课程只包含pyspark系列课程的基础入门部分] Python版本的pyspark是学习Python的人的福音,为广大的Python开发人员提供了一个使用Python调用Spark接口处理大 ...

  2. python计算gpa,Python版GPA计算器

    最近在网申投简历时遇到一个需要计算GPA的问题,想起自己在上学时写的Excel公式版GPA计算器略显low,而且操作也比较复杂,于是一时兴起,写了个Python版的,在此分享给大家! 准备工作: 用户 ...

  3. Spark编程指南——Python版

    摘要:对于1个年仅5岁的开源项目来说,其远谈不上尽善尽美,就比如文档相关.本文翻译自Spark Programming Guide,选取了其中使用Python的部分. 自开源之日至今,Spark已经5 ...

  4. Python ln_虚拟机中单机Spark (Python版)安装

    Spark 安装成功界面 检验Spark(Python版)是否安装成功: # pyspark 楼主已经安装完虚拟机,以下操作为单机版Python版Spark安装步骤: *安装虚拟机 *安装java 检 ...

  5. 大数据Spark(python版)

    大数据 大数据,Spark,Hadoop,python,pyspark 大数据Spark(python版) 前言(环境说明): 1.下载和安装 1)安装java JDK 2)安装Hadoop(伪分布式 ...

  6. spark编程基础python版 pdf_Spark编程基础Python版-第5章-Spark-SQL.pdf

    <Spark编程基础(Python版)> 教材官网:/post/spark-python/ 温馨提示:编辑幻灯片母版,可以修改每页PPT的厦大校徽和底部文字 第5章Spark SQL (P ...

  7. eclipse的python_eclipse中集成python开发环境

    转载:https://www.cnblogs.com/mywood/p/7272487.html Eclipse简介 Eclipse是java开发最常用的IDE,功能强大,可以在MAC和Windos上 ...

  8. mongodb java 日志分析_记一次log4j与mongodb集成引发的问题分析

    问题背景 对项目中的关键应用调用链日志需要结构化得统一吐出到mongodb中,同时项目中日志输出使用log4j,故准备使用log4j的Appender直接集成mongodb的输出,同时mongodb采 ...

  9. 统计学习圣经!经典教材《统计学习导论》Python版

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 编辑:张倩,来源:机器之心 <统计学习导论>很经典,但习题用 ...

最新文章

  1. php 爬虫_Scrapy 爬虫完整案例-基础篇
  2. 告别AI模型黑盒子:可解释性将是数据科学的下一个“超能力”
  3. springboot集成swagger2测试接口
  4. NeHe教程Qt实现——lesson05
  5. java java.lang.Long详解之三 大显神通的位移运算
  6. FastReport人民币大写转换
  7. jQuery中的几个模块总结
  8. python做些什么项目_Python 的练手项目有哪些值得推荐
  9. 天池学习赛——街景字符编码识别(得分上0.93)
  10. python no such file or directory_Python3 no such file or directory
  11. Atitit 微服务的原理与实现方式 目录 第一章 什么是微服务? 1 第二章 核心要素 2 足够微小, 2 服务化 进程隔离 2 第三章 实现模式 2 多个app启动文件(推荐轻量级) 2 多项目
  12. 【Websocket编程】基于libwebsockets实现客户端数据通信
  13. 如何免费在线将pdf转换成jpg图片
  14. 虚幻引擎UE4加载GIS数据《数字孪生智慧城市》
  15. 打造数字化转型IT生态系统的IT管理方法:IT4IT一瞥
  16. crash日志学习(初步)
  17. VR全景为家装赋能,沉浸式体验家装设计效果
  18. jQuery搜索高亮显示
  19. ultraos win10启动盘_使用ultraiso软件制Win10专业版U盘系统盘制作安装教程
  20. 海思HI3516 MIPI屏幕调试笔记

热门文章

  1. 最全CSS各种布局详解
  2. linux ssh和scp,Linux SSH 与 SCP命令简述
  3. swiper.js使用心得
  4. django 打开的html css_Django分页完整示例
  5. code换取微信openid_微信授权登录开发的两种方式
  6. linux修改ip广播地址,Linux设置查看静态IP之ifconfig命令
  7. osgQt::GLWidget的坑
  8. OSG模拟鼠标事件影响操纵器
  9. linux 流量 脚本,linux 检测网络出入流量 当达到一定量时 自动执行另一个脚本。...
  10. java 字节码分析_手把手带你分析Java中的Class字节码文件