Spring Boot與Spark、Cassandra系統(tǒng)集成開發(fā)示例
本文演示以Spark作為分析引擎,Cassandra作為數(shù)據(jù)存儲,而使用Spring Boot來開發(fā)驅(qū)動程序的示例。
1.前置條件
- 安裝Spark(本文使用Spark-1.5.1,如安裝目錄為/opt/spark)
- 安裝Cassandra(3.0+)
創(chuàng)建keyspace
CREATE KEYSPACE hfcb WITH REPLICATION = { 'class' : 'SimpleStrategy', 'replication_factor' : 3 };
創(chuàng)建table
CREATE TABLE person ( id text PRIMARY KEY, first_name text, last_name text );
插入測試數(shù)據(jù)
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作為數(shù)據(jù)存儲,需要加上下面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 文件,輸入下面內(nèi)容
SPARK_CLASSPATH=/opt/spark/managed-lib/*
3.Spring Boot應(yīng)用開發(fā)
添加 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;
}
}
簡單調(diào)用
@Repository
public class PersonRepository {
@Autowired
CassandraSQLContext cassandraSQLContext;
public Long countPerson(){
DataFrame people = cassandraSQLContext.sql("select * from person order by id");
return people.count();
}
}
啟動即可如常規(guī)Spring Boot程序一樣執(zhí)行。
源碼地址: https://github.com/wiselyman/spring-spark-cassandra.git
總結(jié)
以上所述是小編給大家介紹的Spring Boot與Spark、Cassandra系統(tǒng)集成開發(fā)示例,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
關(guān)于SpringBoot使用@Async的總結(jié)
這篇文章主要介紹了關(guān)于SpringBoot使用@Async的總結(jié),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-12-12
詳解SpringBoot整合RabbitMQ如何實現(xiàn)消息確認(rèn)
這篇文章主要介紹了SpringBoot整合RabbitMQ是如何實現(xiàn)消息確認(rèn)的,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-05-05
Java實現(xiàn)優(yōu)雅的參數(shù)校驗方法詳解
這篇文章主要為大家詳細(xì)介紹了Java語言如何實現(xiàn)優(yōu)雅的參數(shù)校驗,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)Java有一定是幫助,需要的可以參考一下2022-06-06
SpringBoot?實現(xiàn)CAS?Server統(tǒng)一登錄認(rèn)證的詳細(xì)步驟
??CAS(Central?Authentication?Service)中心授權(quán)服務(wù),是一個開源項目,目的在于為Web應(yīng)用系統(tǒng)提供一種可靠的單點登錄,這篇文章主要介紹了SpringBoot?實現(xiàn)CAS?Server統(tǒng)一登錄認(rèn)證,需要的朋友可以參考下2024-02-02
ByteArrayInputStream簡介和使用_動力節(jié)點Java學(xué)院整理
ByteArrayInputStream 是字節(jié)數(shù)組輸入流。它繼承于InputStream。這篇文章主要介紹了ByteArrayInputStream簡介和使用_動力節(jié)點Java學(xué)院整理,需要的朋友可以參考下2017-05-05
spring cloud zuul 與 sentinel的結(jié)合使用操作
這篇文章主要介紹了spring cloud zuul 與 sentinel 的結(jié)合使用操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-06-06
RestTemplate使用Proxy代理作為跳板發(fā)送請求
這篇文章主要為大家介紹了RestTemplate使用代理proxy作為跳板發(fā)送請求的方法示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2022-03-03

