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 基礎(chǔ)信息配置
- 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應(yīng)用程序的主控。
SparkSession:從Spark2.0開始,SparkSession已經(jīng)成為Spark處理RDD、DataFrame 和 Dataset 的入口點。SparkSessio n封裝了SparkConf、SparkContext和SQLContext。為了向后兼容,SQLContext和HiveContext也被保存下來。它實質(zhì)上是SQLContext和HiveContext的組合(未來可能還會加上StreamingContext),所以在SQLContext和HiveContext上可用的API在 SparkSession 上同樣是可以使用的。SparkSession 內(nèi)部封裝了sparkContext,所以計算實際上是由 sparkContext 完成的。
SQLContext:在Spark version1.0中,為了處理結(jié)構(gòu)化數(shù)據(jù)(行和列),SQLContext (org.apache.spark.sql.SQLContext )是一個入口點,但是在2.0版本中,SQLContext已經(jīng)被SparkSession所取代。Apache Spark SQLContext是SparkSQL的入口點,Spark是Spark1.x中用于結(jié)構(gòu)化數(shù)據(jù)(行和列)的Spark模塊。正在處理。Spark SQLContext已初始化。
JavaSparkContext 是 Java友好版本的[org.apache.spark.SparkContext]返回[org.apache.spark.api.java.JavaRDD],并使用Java集合,而不是Scala集合。
到此這篇關(guān)于SpringBoot對接Spark過程詳解的文章就介紹到這了,更多相關(guān)SpringBoot Spark內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringBoot如何處理@KafkaListener消息
Spring通過KafkaMessageListenerContainer、ConcurrentMessageListenerContainer等組件實現(xiàn)Kafka消息的監(jiān)聽和處理,并通過@KafkaListener注解將業(yè)務(wù)邏輯與Kafka消費者連接起來,Spring?Boot自動配置Kafka相關(guān)組件,簡化了Kafka的使用2024-12-12解決Springboot全局異常處理與AOP日志處理中@AfterThrowing失效問題
這篇文章主要介紹了解決Springboot全局異常處理與AOP日志處理中@AfterThrowing失效問題,文中介紹了兩種失效場景,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧2023-05-05Mybatis傳入List實現(xiàn)批量更新的示例代碼
這篇文章主要介紹了Mybatis傳入List實現(xiàn)批量更新的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-10-10解決運行jar包出錯:ClassNotFoundException問題
這篇文章主要介紹了解決運行jar包出錯:ClassNotFoundException問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-12-12