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...

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

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

spark连接cassandra配置说明

spark连接cassandra配置说明

Cassandra学习笔记之数据读取

读取流程 cassandra的数据可能在Memtable中,也可能在多个SSTable中,每个地方都可能有某个column对应的值,怎么才能读取最新的值呢?有必要了解下cassandra读取数据流程...

Spark+Cassandra优化

问题1:reduce task数目不合适 解决方案: 需要根据实际情况调整默认配置,调整方式是修改参数spark.default.parallelism。通常的,reduce数目设置为co...

Spark学习笔记之-Spark-cassandra-connector阅读

最近使用Spark将处理数据存储到cassandra遇到些问题,于是乎大体看了下spark-cassandra-connector的源码 这是该项目的主页:https://github.com/dat...

spark连接cassandra配置说明

spark连接cassandra配置说明

Spark与Hive的交互

[Toc]Spark RDD 写入 HiveDataFrame基本原理就是将RDD转换为DataFrame形式转换的方法有两种. 利用case class, 将RDD转换成为RDD[case clas...

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

摘要:Spark,强大的迭代计算框架,在内存数据计算上无可匹敌。Cassandra,优异的列式存储NoSQL,在写入操作上难逢敌手。自本期《问底》,许鹏将结合实际实践,带大家打造一个由Spark和Ca...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:spark+cassandra实时数据分析方案
举报原因:
原因补充:

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