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配置说明

spark连接cassandra配置说明

Spark+Cassandra优化

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

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

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

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

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

Spark,一种快速数据分析替代方案

虽然 Hadoop 在分布式数据分析方面备受关注,但是仍有一些替代产品提供了优于典型 Hadoop 平台的令人关注的优势。Spark 是一种可扩展的数据分析平台,它整合了内存计算的基元,因此,相对...

spark高级数据分析

  • 2017-03-20 17:26
  • 7.07MB
  • 下载

Spark快速大数据分析

  • 2017-08-08 09:09
  • 15.87MB
  • 下载

2011hadoop技术大会实时数据分析

facebook在这次大会上谈了facebook的进展。他们以前架构是  applicationserver 将日志近乎实时的通过facebook自己的流传送工具scribe,传送到...
  • wf1982
  • wf1982
  • 2011-12-06 23:55
  • 2435
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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