SpringBoot對接Spark過程詳解
本文主要介紹 SpringBoot 與 Spark 如何對接,具體使用可以參考文章 SpringBoot 使用 Spark
pom 文件添加 maven 依賴
- spark-core:spark 的核心庫,如:SparkConf
- spark-sql:spark 的 sql 庫,如:sparkSession
- janino: Janino 是一個極小、極快的 開源Java 編譯器,若不添加,spark 獲取 MySQL 或 JSON 數(shù)據(jù)時會報錯
org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is java.lang.NoClassDefFoundError: org/codehaus/janino/InternalCompilerExceptio
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.13</artifactId>
<version>3.2.1</version>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-sql_2.13</artifactId>
<version>3.2.1</version>
</dependency>
<dependency>
<groupId>org.codehaus.janino</groupId>
<artifactId>janino</artifactId>
<version>3.0.8</version>
</dependency>
application.yml 添加 spack 配置,master 使用 local 不需要搭建 spark,方便學習與測試
spark:
app:
name: fat
master:
uri: local[*]
配置 SparkConfig
- sparkConf:Spark 基礎信息配置
- JavaSparkContext:基于 sparkConf 生成,用于
- SparkSession:基于 SparkContext 生成
@Configuration
public class SparkConfig {
@Value("${spark.app.name}")
private String appName;
@Value("${spark.master.uri}")
private String sparkMasterUri;
@Bean
public SparkConf sparkConf() {
SparkConf sparkConf = new SparkConf()
.setAppName(appName)
.setMaster(sparkMasterUri);
return sparkConf;
}
@Bean
@ConditionalOnMissingBean(JavaSparkContext.class)
public JavaSparkContext javaSparkContext() {
return new JavaSparkContext(sparkConf());
}
@Bean
public SparkSession sparkSession() {
return SparkSession
.builder()
.sparkContext(javaSparkContext().sc())
.getOrCreate();
}
}
SparkContext:從Spark1.x開始,Spark SparkContext是Spark的入口點,用于在集群上以編程方式創(chuàng)建Spark RDD、累加器和廣播變量。是spark執(zhí)行環(huán)境的客戶端,是spark執(zhí)行作業(yè)的入口點,是spark應用程序的主控。
SparkSession:從Spark2.0開始,SparkSession已經(jīng)成為Spark處理RDD、DataFrame 和 Dataset 的入口點。SparkSessio n封裝了SparkConf、SparkContext和SQLContext。為了向后兼容,SQLContext和HiveContext也被保存下來。它實質上是SQLContext和HiveContext的組合(未來可能還會加上StreamingContext),所以在SQLContext和HiveContext上可用的API在 SparkSession 上同樣是可以使用的。SparkSession 內(nèi)部封裝了sparkContext,所以計算實際上是由 sparkContext 完成的。
SQLContext:在Spark version1.0中,為了處理結構化數(shù)據(jù)(行和列),SQLContext (org.apache.spark.sql.SQLContext )是一個入口點,但是在2.0版本中,SQLContext已經(jīng)被SparkSession所取代。Apache Spark SQLContext是SparkSQL的入口點,Spark是Spark1.x中用于結構化數(shù)據(jù)(行和列)的Spark模塊。正在處理。Spark SQLContext已初始化。
JavaSparkContext 是 Java友好版本的[org.apache.spark.SparkContext]返回[org.apache.spark.api.java.JavaRDD],并使用Java集合,而不是Scala集合。
到此這篇關于SpringBoot對接Spark過程詳解的文章就介紹到這了,更多相關SpringBoot Spark內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
SpringBoot如何處理@KafkaListener消息
Spring通過KafkaMessageListenerContainer、ConcurrentMessageListenerContainer等組件實現(xiàn)Kafka消息的監(jiān)聽和處理,并通過@KafkaListener注解將業(yè)務邏輯與Kafka消費者連接起來,Spring?Boot自動配置Kafka相關組件,簡化了Kafka的使用2024-12-12
解決Springboot全局異常處理與AOP日志處理中@AfterThrowing失效問題
這篇文章主要介紹了解決Springboot全局異常處理與AOP日志處理中@AfterThrowing失效問題,文中介紹了兩種失效場景,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧2023-05-05
Mybatis傳入List實現(xiàn)批量更新的示例代碼
這篇文章主要介紹了Mybatis傳入List實現(xiàn)批量更新的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-10-10
解決運行jar包出錯:ClassNotFoundException問題
這篇文章主要介紹了解決運行jar包出錯:ClassNotFoundException問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-12-12

