版本说明:

spring boot:2.5.9

jdk:1.8

spark:2.4.5

sclala:2.11.12

首先你需要有一个完美的spring boot项目(java版本)能成功运行,这就不赘述了,按照网上的自己搭建吧,然后重要的来了,我捣鼓了两天时间,各样的报错见过了,网上的处理方法要嘛是不全,要嘛是没有用,各种办法都试过,我只分享我成功后的配置,

xml配置添加:(scala环境和spark环境)

在原有的依赖里面添加下面的依赖,然后在里面添加scala编译依赖,不然编译不通过,会报错找不到符号

org.scala-lang

scala-library

2.11.12

org.apache.spark

spark-core_2.11

2.4.5

org.scala-tools

maven-scala-plugin

2.15.2

compile

testCompile

service层,注意前端调用scala接口,那么scala服务的所有代码都需要用scala代码编写,不能跟java代码混编(会报错:包导入成功了但是运行时报错找不到包)

scala service层测试代码

package com.jack.graduation.service

import org.apache.spark.rdd.RDD

import org.apache.spark.{SparkConf, SparkContext}

import org.springframework.stereotype.Service

@Service

class TestService {

def test(): Boolean = {

true

}

def wc(): Map[String, Int] = {

val sparkConf: SparkConf = new SparkConf()

.set("spark.driver.host", "myword")

.setAppName("test_scala")

.setMaster("local[*]")

val sc = new SparkContext(sparkConf)

val fileRDD: RDD[String] = sc.textFile("D:/idea2020/IdeaProjects/graduation/src/main/resources/files/a.txt")

val tempRDD: RDD[String] = fileRDD.flatMap(_.split(" "))

val mapRDD: RDD[(String, Int)] = tempRDD.map((_, 1))

val map: Map[String, Int] = mapRDD.reduceByKey(_ + _).collect().toMap

println("testmap"+map)

sc.stop()

map

}

}

scala controller层测试代码

package com.jack.graduation.controller

import com.jack.graduation.service.TestService

import javax.annotation.Resource

import org.springframework.web.bind.annotation._

/**

*

* @param test

*/

@RestController

@RequestMapping(Array("/sparkCon"))

class CustomerController @Resource()(test: TestService) {

@GetMapping(Array("/test"))

def test(): String = {

val bool: Boolean = test.test()

println(bool)

"hello scala"

}

@GetMapping(Array("/wc"))

def wcTest(): Boolean = {

val stringToInt: Map[String, Int] = test.wc()

println("wcmap" + stringToInt)

stringToInt.nonEmpty

}

}

注意上面的服务层代码的导入方式: @Resource()(test: TestService),如果通过@Autowired会报错

途中碰到各种困难,可以尝试以下方法

maven先clean

然后install

然后重启idea

也可重新编译代码

相关链接

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: