spark+cassandra实时数据分析方案

原创 2015年11月18日 15:41:10

前言


在本教程中,您将学习如何设置用于读取和写入数据至Cassandra的一个非常简单的spark应用程序。在开始前,你需要拥有spark和cassandra的基本知识,详情请参阅sparkcassandra官网。


创建cassandra架构示例

1.创建以下简单的keyspace和table,并在cqlsh执行:

CREATE KEYSPACE test WITH replication = {'class': 'SimpleStrategy', 'replication_factor': 1 };
CREATE TABLE test.kv(key text PRIMARY KEY, value int);

2.插入测试数据:

INSERT INTO test.kv(key, value) VALUES ('key1', 1);
INSERT INTO test.kv(key, value) VALUES ('key2', 2);

现在,你可以编写使用Cassandra的第一个spark项目。


设置 SparkContext

创建SparkContext之前,将spark.cassandra.connection.host属性设置为Cassandra的节点之一的地址:

#scala
val conf = new SparkConf(true)
   .set("spark.cassandra.connection.host", "127.0.0.1")

创建SparkContext。替换127.0.0.1你的Spark-master的实际地址(或使用“local”,以本地模式运行):

val sc = new SparkContext("spark://127.0.0.1:7077", "test", conf)

导入针对SparkContext 和 RDD的 Cassandra专用功能:

import com.datastax.spark.connector._

从cassandra读取数据并分析

使用sc.cassandraTable方法来查看该表并返回Spark-RDD:

val rdd = sc.cassandraTable("test", "kv")
println(rdd.count)
println(rdd.first)
println(rdd.map(_.getInt("value")).sum)  

**输出结果**
scala> import com.datastax.spark.connector._
import com.datastax.spark.connector._

scala> val rdd = sc.cassandraTable("test", "kv")
rdd: com.datastax.spark.connector.rdd.CassandraTableScanRDD[com.datastax.spark.connector.CassandraRow] = CassandraTableScanRDD[0] at RDD at CassandraRDD.scala:15

scala> println(rdd.count)
2

scala> println(rdd.first)
CassandraRow{key: key1, value: 1}

scala> println(rdd.map(_.getInt("value")).sum)  
3.0

使用RDD保存数据至cassandra

为表添加两行数据:

val collection = sc.parallelize(Seq(("key3", 3), ("key4", 4)))
collection.saveToCassandra("test", "kv", SomeColumns("key", "value")) 
**查看结果**
scala> rdd.collect()
res8: Array[com.datastax.spark.connector.CassandraRow] = Array(CassandraRow{key: key1, value: 1}, CassandraRow{key: key4, value: 4}, CassandraRow{key: key3, value: 3}, CassandraRow{key: key2, value: 2})

连接cassandra

本节介绍如何星火连接到cassandra以及如何从spark应用执行CQL语句。


配置 SparkContext连接cassandra工作

为了你的spark应用程序可以连接到cassandra,请在SparkConf对象配置连接选项。这些以spark为前缀的选项,以便它们可以从spark-shell被识别和$ SPARK_HOME/ CONF /sparkdefault.conf内设定。
详细配置官方解释请查看本博客文章《spark连接cassandra配置说明》
示例:

val conf = new SparkConf(true)
        .set("spark.cassandra.connection.host", "192.168.123.10")
        .set("spark.cassandra.auth.username", "cassandra")            
        .set("spark.cassandra.auth.password", "cassandra")

val sc = new SparkContext("spark://192.168.123.10:7077", "test", conf)

导入spark-connetct-cassandra驱动:

import com.datastax.spark.connector._                                    
版权声明:本文为博主原创文章,未经博主允许不得转载。

使用Spark+Cassandra打造高性能数据分析平台

Cassandra是一个分布式、高可扩展的数据库,用户可以创建线上应用程序,实时处理大量数据。   Apache Spark是应用于Hadoop集群的处理引擎,在内存条件下可以为Hadoop加速10...
  • liyong1115
  • liyong1115
  • 2015年06月04日 16:40
  • 2655

一个spark streaming+Cassandra、分布式作业调度系统总结

  • 2017年03月10日 20:27
  • 4.51MB
  • 下载

StratioDeep:一个在Spark 和Cassandra之间的集成层

  • 2014年05月29日 14:08
  • 847KB
  • 下载

使用Spark+Cassandra打造高性能数据分析平台(二)

【导读】笔者( 许鹏)看Spark源码的时间不长,记笔记的初衷只是为了不至于日后遗忘。在源码阅读的过程中秉持着一种非常简单的思维模式,就是努力去寻找一条贯穿全局的主线索。在笔者看来,Spark中的...
  • cqboy1991
  • cqboy1991
  • 2016年02月01日 10:02
  • 2012

spark连接cassandra配置说明

spark连接cassandra配置说明
  • losangelesunshine
  • losangelesunshine
  • 2015年11月19日 10:34
  • 1404

Cassandra 3.x官方文档_数据库内部

存储引擎 Cassandra使用了一种类似于日志结构合并树的存储结构,而不是像传统关系型数据库那样使用B-Tree。Cassandra避免写之前读。写前读,尤其是大型的分布式系统中,可能导致读取性能...
  • qq_32523587
  • qq_32523587
  • 2017年01月12日 00:05
  • 934

如何建立完整可用的安全大数据平台

如何建立完整可用的安全大数据平台 2016-03-07 江金陵 大数据杂谈 “ 要建立一个大数据系统,我们需要从数据流的源头跟踪到最后有价值的输出,并在现有的Hadoop和大数据生态圈内根...
  • xiao_jun_0820
  • xiao_jun_0820
  • 2016年03月09日 11:38
  • 2963

【巨杉访谈】分布式数据库如何实现海量数据实时查询

巨杉数据库高访问量、海量数据业务背后的基础系统架构是如何设计和优化的?分布式数据库是如何做到数据的透明水平、垂直拆分,实现海量数据实时查询的? 访谈实录 1.巨杉数据库作为国内...
  • SequoiaDB_Official
  • SequoiaDB_Official
  • 2017年09月11日 09:18
  • 573

许鹏:使用Spark+Cassandra打造高性能数据分析平台

摘要:Spark,强大的迭代计算框架,在内存数据计算上无可匹敌。Cassandra,优异的列式存储NoSQL,在写入操作上难逢敌手。自本期《问底》,许鹏将结合实际实践,带大家打造一个由Spark和Ca...
  • miller_lover
  • miller_lover
  • 2014年10月25日 09:05
  • 794

实时流数据分析——2017 年的 27 个预测

根据Markets & Markets的预测,流数据分析市场将从 2016 年的 30 8 亿美元增长到 2021 年的 137 亿美元。各个企业都将快速意识到他们需要利用实时数据集成和流数据分析来获...
  • chenjunji123456
  • chenjunji123456
  • 2017年01月10日 11:54
  • 410
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:spark+cassandra实时数据分析方案
举报原因:
原因补充:

(最多只允许输入30个字)