Spring Boot与Spark、Cassandra系统集成开发示例
作者:汪云飞 发布时间:2021-06-03 13:40:51
本文演示以Spark作为分析引擎,Cassandra作为数据存储,而使用Spring Boot来开发驱动程序的示例。
1.前置条件
安装Spark(本文使用Spark-1.5.1,如安装目录为/opt/spark)
安装Cassandra(3.0+)
创建keyspace
CREATE KEYSPACE hfcb WITH REPLICATION = { 'class' : 'SimpleStrategy', 'replication_factor' : 3 };
创建table
CREATE TABLE person (
id text PRIMARY KEY,
first_name text,
last_name text
);
插入测试数据
insert into person (id,first_name,last_name) values('1','wang','yunfei');
insert into person (id,first_name,last_name) values('2','peng','chao');
insert into person (id,first_name,last_name) values('3','li','jian');
insert into person (id,first_name,last_name) values('4','zhang','jie');
insert into person (id,first_name,last_name) values('5','liang','wei');
2.spark-cassandra-connector安装
让Spark-1.5.1能够使用Cassandra作为数据存储,需要加上下面jar包的依赖(示例将包放置于 /opt/spark/managed-lib/ 目录,可任意):
cassandra-clientutil-3.0.2.jar
cassandra-driver-core-3.1.4.jar
guava-16.0.1.jar
cassandra-thrift-3.0.2.jar
joda-convert-1.2.jar
joda-time-2.9.9.jar
libthrift-0.9.1.jar
spark-cassandra-connector_2.10-1.5.1.jar
在 /opt/spark/conf 目录下,新建 spark-env.sh 文件,输入下面内容
SPARK_CLASSPATH=/opt/spark/managed-lib/*
3.Spring Boot应用开发
添加 spark-cassandra-connector 和 spark 依赖
<dependency>
<groupId>com.datastax.spark</groupId>
<artifactId>spark-cassandra-connector_2.10</artifactId>
<version>1.5.1</version>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.10</artifactId>
<version>1.5.1</version>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-sql_2.10</artifactId>
<version>1.5.1</version>
</dependency>
在 application.yml 中配置 spark 与 cassandra 路径
spark.master: spark://master:7077
cassandra.host: 192.168.1.140
cassandra.keyspace: hfcb
此处特别说明 spark://master:7077 是域名形式而不是ip地址,可修改本地 hosts 文件将 master 与 ip 地址映射。
配置 SparkContext 和 CassandraSQLContext
@Configuration
public class SparkCassandraConfig {
@Value("${spark.master}")
String sparkMasterUrl;
@Value("${cassandra.host}")
String cassandraHost;
@Value("${cassandra.keyspace}")
String cassandraKeyspace;
@Bean
public JavaSparkContext javaSparkContext(){
SparkConf conf = new SparkConf(true)
.set("spark.cassandra.connection.host", cassandraHost)
// .set("spark.cassandra.auth.username", "cassandra")
// .set("spark.cassandra.auth.password", "cassandra")
.set("spark.submit.deployMode", "client");
JavaSparkContext context = new JavaSparkContext(sparkMasterUrl, "SparkDemo", conf);
return context;
}
@Bean
public CassandraSQLContext sqlContext(){
CassandraSQLContext cassandraSQLContext = new CassandraSQLContext(javaSparkContext().sc());
cassandraSQLContext.setKeyspace(cassandraKeyspace);
return cassandraSQLContext;
}
}
简单调用
@Repository
public class PersonRepository {
@Autowired
CassandraSQLContext cassandraSQLContext;
public Long countPerson(){
DataFrame people = cassandraSQLContext.sql("select * from person order by id");
return people.count();
}
}
启动即可如常规Spring Boot程序一样执行。
源码地址: https://github.com/wiselyman/spring-spark-cassandra.git
总结
以上所述是小编给大家介绍的Spring Boot与Spark、Cassandra系统集成开发示例网站的支持!
来源:http://www.wisely.top/2018/02/01/spring_boot-spark-cassandra-integration/


猜你喜欢
- 1.微信配置信息 global.properties2.方法wxpay用于生成预支付订单信息方法notifyWeiXinPay用于微信支付成
- 什么原因使我们不得不使用线程池?个人认为主要原因是:短时间内需要处理的任务数量很多使用线程池的好处:1.减少在创建和销毁线程上所花的时间以及
- 本文为大家分享了Swing单选按钮和复选框的使用方法,供大家参考,具体内容如下JRadioButton构造函数:JRadioButton()
- 安装Jenkins提示:首先Jenkins安装方式有2中,一种是yum安装,另一种是使用war的方式进行安装(war就需要安装tomcat)
- mybatis #{}无法自动添加引号传入string类型时,无法自动添加引号,导致SQL将值识别为列名,导致SQL失败解决使用map类型代
- 一、需求C#种的下拉框ComboBox不支持下拉复选框列表与下拉树形列表等,系统中需要用到的地方使用了第三方组件,现在需要将第三方组件替换掉
- 这篇文章主要介绍了Spring AOP AspectJ使用及配置过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考
- 实验环境:IDEA2020.1+MySQL8.0.21+Mybatis3.5.5+Junit4.13搭建环境–>导入Mybatis—&
- @RequestBody配合@Valid校验入参参数自定义一个Controllerimport com.example.demo.pojo.
- 本文同时讨论了IComparable和IComparer接口,原因有两点。这两个接口经常一起使用。虽然接口类似且名称相似,但它们却有不同的用
- 看了下网上代码:我想要的效果如下图下划线和文字有15dp的间距 eeeeee的颜色上代码,<"1.0
- 一个真实的故事大学的时候就开过一门课程,讲设计模式,可是大学生没什么编程实践经验,在大学里面听设计模式的感觉,就像听天书。听着都有道理,可是
- 演示1 - 代理创建器public class A17 { public static void main(Str
- 前言这两天面试了一个物联网公司高级研发,面试题是下面这样子公司领导,部门主管,小组组长,组成员4级,假如有个 疫情预警,先通知组人员(对个人
- 前言:众所周知,大家在很多项目中都会使用到图表,具体表现形式为饼图、折线图、柱状图等,但是网上有很多图表架包都是需要收费的,而Google的
- VisualVM是JDK自带的一款全能型性能监控和故障分析工具,包括对CPU使用、JVM堆内存消耗、线程、类加载的实时监控,内存dump文件
- 1.如果执行了try块没有异常,则继续运行finally块中的语句,即使try块通过return,break,或者continue于最后的语
- AndroidStudio kotlin配置安装插件File -> Settings -> Plugins -> Brow
- 一,SQL注入–1,需求–1,利用jdbc查询user的信息,如果信息正确就登录,否则提示错误–1,创建user表,指定字段id name
- 一、实现MyBatis ID构建接口@Slf4j@Componentpublic class CustomIdGenerator imple