使用Spark和MemSQL Spark连接器运行实时应用

更新时间:2015-04-23 10:57:12点击次数:3459次

本文介绍的MemSQL 数据库号称是世界上快的分布式内存数据库(The World’s Fastest In-Memory Database)!它是由Eric Frenkiel(前Facebook员工)和Nikita Shamgunov(前微软SQL Server高级工程师)创建的一款基于内存的分布式关系数据库,它通过将数据存储在内存中,并将SQL语句预编译为C++而获得速的执行效率。它兼容MySQL,且速度要比MySQL快30倍,能实现每秒150万次事务。


近在其官方发布的一个MemSQL Spark Connector可以很好地和Spark一起使用,使得Spark用户可以快速地读写数据库中的数据。MemSQL 天生就适合Spark,因为它可以高效地处理大量的读写,而Spark经常需要这样的操作,而且MemSQL可以提供大量的空间足以提供给Spark创建新的数据。


MemSQL Spark Connector提供了所有Spark和MemSQL交互的各种接口,而且其中做了许多的优化措施,比如并行地从MemSQL读取数据;当 MemSQL和Spark运行在一个物理节点上,Spark直接将数据写入其中。MemSQL提供了两个主要的组建:MemSQLRDD和saveToMemsql。


MemSQLRDD用于存储从MemSQL查询的数据集;而saveToMemsql将Spark中的RDD数据写入到MemSQL表中。这两个接口和Spark内置的JDBC接口看起来很类似,而且使用方式也很类似(可以看这里《Spark与Mysql(JdbcRDD)整合开发》)。来看看如何使用MemSQLRDD。我们使用从MemSQL读取表数据,并存储在MemSQLRDD中:


01import com.memsql.spark.connector.rdd.MemSQLRDD

02 

03...

04 

05val rdd = new MemSQLRDD(

06    sc,

07    dbHost,

08    dbPort,

09    dbUser,

10    dbPassword,

11    dbName,

12    "SELECT * FROM iteblog",

13    (r: ResultSet) => { r.getString("test_column") })

14rdd.first()  // Contains the value of "test_column" for the first row


如果你想将RDD写入到Memsql,可以使用saveToMemsql函数:


1import com.memsql.spark.connector._

3...

5val rdd = sc.parallelize(Array(Array("www", "iteblog"), Array("com", "qux")))

6rdd.saveToMemsql(dbHost, dbPort, dbUser, dbPassword,

7    dbName, outputTableName, insertBatchSize=1000)


从上面的例子可以看出,使用Memsql和Spark结合是多么的容易。


本文翻译自: blog.memsql.com/memsql-spark-connector

转载自过往记忆(www.iteblog.com)

本文链接地址: 《使用Spark和MemSQL Spark连接器运行实时应用》(http://www.iteblog.com/archives/1327)

本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责,本站只提供参考并不构成任何投资及应用建议。本站是一个个人学习交流的平台,网站上部分文章为转载,并不用于任何商业目的,我们已经尽可能的对作者和来源进行了通告,但是能力有限或疏忽,造成漏登,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

  • 项目经理 点击这里给我发消息
  • 项目经理 点击这里给我发消息
  • 项目经理 点击这里给我发消息
  • 项目经理 点击这里给我发消息