分享

Spark技术实战之2 -- Spark Cassandra Connector的安装和使用

xioaxu790 2014-10-19 11:37:22 发表于 连载型 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 0 29710
问题导读
1、怎样创建可以连接到cassandra的sc?
2、如何添加相应的library来支持spark-cassandra-connector?
3、最简单的配置什么?





本文接上一篇:Spark技术实战之1 -- KafkaWordCount

Spark技术实战之2 -- Spark Cassandra Connector的安装和使用
Spark技术实战之3 -- 利用Spark将json文件导入Cassandra


概要
前提
假设当前已经安装好如下软件
jdk
sbt
git
scala

安装cassandra
以archlinux为例,使用如下指令来安装cassandra
  1. yaourt -S cassandra
复制代码


启动cassandra
  1. cassandra -f
复制代码


创建keyspace和table, 运行/usr/bin/cqlsh进入cql console,然后执行下述语句创建keyspace和table
  1. CREATE KEYSPACE test WITH replication = {'class': 'SimpleStrategy', 'replication_factor': 1 };
  2. CREATE TABLE test.kv(key text PRIMARY KEY, value int);
复制代码


添加记录,继续使用cql console
  1. INSERT INTO test.kv(key, value) VALUES ('key1', 1);
  2. INSERT INTO test.kv(key, value) VALUES ('key2', 2);
复制代码


验证记录已经插入成功,执行如下cql
  1. select * from test.kv;
复制代码


下载编译spark-cassandra-connector
下载最新的spark-cassandra-connector源码
  1. git clone https://github.com/datastax/spark-cassandra-connector.git
复制代码



编译
  1. sbt package
复制代码

这中间要等待比较长的时间,请保持足够的耐心

运行spark-shell
首先请确保cassandra已经正常安装和运行,如有问题请返回开始的章节安装cassandra

如何添加相应的library来支持spark-cassandra-connector,并没有一个明确的文档说明,折腾了一个下午,终于弄出了一个最简的配置
  1. bin/spark-shell --driver-class-path /root/working/spark-cassandra-connector/spark-cassandra-connector/target/scala-2.10/spark-cassandra-connector_2.10-1.1.0-SNAPSHOT.jar:
  2. /root/.ivy2/cache/org.apache.cassandra/cassandra-thrift/jars/cassandra-thrift-2.0.9.jar:
  3. /root/.ivy2/cache/org.apache.thrift/libthrift/jars/libthrift-0.9.1.jar:
  4. /root/.ivy2/cache/org.apache.cassandra/cassandra-clientutil/jars/cassandra-clientutil-2.0.9.jar:
  5. /root/.ivy2/cache/com.datastax.cassandra/cassandra-driver-core/jars/cassandra-driver-core-2.0.4.jar:
  6. /root/.ivy2/cache/io.netty/netty/bundles/netty-3.9.0.Final.jar:
  7. /root/.ivy2/cache/com.codahale.metrics/metrics-core/bundles/metrics-core-3.0.2.jar:
  8. /root/.ivy2/cache/org.slf4j/slf4j-api/jars/slf4j-api-1.7.7.jar:
  9. /root/.ivy2/cache/org.apache.commons/commons-lang3/jars/commons-lang3-3.3.2.jar:
  10. /root/.ivy2/cache/org.joda/joda-convert/jars/joda-convert-1.2.jar:
  11. /root/.ivy2/cache/joda-time/joda-time/jars/joda-time-2.3.jar:
  12. /root/.ivy2/cache/org.apache.cassandra/cassandra-all/jars/cassandra-all-2.0.9.jar:
  13. /root/.ivy2/cache/org.slf4j/slf4j-log4j12/jars/slf4j-log4j12-1.7.2.jar
复制代码


上述指令假设spark-cassandra-connector的源码是下载在$HOME/working目录下,请根据自己的情况作适当修改

我是如何猜测到需要指定这些包依赖的呢?说白了,也很简单,就是执行以下指令,然后再查看相就的java进程中的运行参数
  1. #运行spark-cassandra-connector测试集
  2. sbt test
  3. sbt it:test
复制代码


当上述指令还在运行的时候,使用ps来查看java运行的参数,这样就反过来知道所需要的包依赖了
  1. ps -ef|grep -i java
复制代码



测试程序
由于spark-shell会默认创建sc,所以首先需要停止掉默认的sc,然后利用新的配置来创建可以连接到cassandra的sc,示例代码如下
  1. sc.stop
  2. import com.datastax.spark.connector._
  3. import org.apache.spark._
  4. val conf = new SparkConf()
  5. conf.set("spark.cassandra.connection.host", "127.0.0.1")
  6. val sc = new SparkContext("local[2]", "Cassandra Connector Test", conf)
  7. val table = sc.cassandraTable("test", "kv")
  8. table.count
复制代码



如果一切正常会显示出如下结果
  1. res3: Long = 2
复制代码



小结
进入实战阶段,挑战会越来越多,保持足够的信心和耐心很重要。

本篇内容和实战一中的kafka cluster组织在一起的话,就会形成一个从前台到后台存储的完整处理链条。


相关文章

Spark技术实战之1 -- KafkaWordCount
http://www.aboutyun.com/thread-9580-1-1.html



Spark技术实战之3 -- 利用Spark将json文件导入Cassandra
http://www.aboutyun.com/thread-9583-1-1.html


Apache Spark技术实战之4 -- SparkR的安装及使用
http://www.aboutyun.com/thread-10082-1-1.html

Apache Spark技术实战之5 -- spark-submit常见问题及其解决
http://www.aboutyun.com/thread-10083-1-1.html

Apache Spark技术实战之6 -- CassandraRDD高并发数据读取实现剖析
http://www.aboutyun.com/thread-10084-1-1.html



没找到任何评论,期待你打破沉寂

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条