利用Spark进行数据的处理之后,需要将结果返回给客户端,一种办法就是将处理得结果保存起来,客户端去访问这个结果。这种模式比较适合计算量比较大,结果相对比较稳定,实时性不高的情况。另外一种办法就是直接在SparkContext提供服务给客户端,用JavaWeb进行是一种选项,这里采用利用Scala编程,对外提供http服务,返回的结果是Json格式,下面是代码:
import javax.servlet.http.{HttpServletRequest, HttpServletResponse}
import org.apache.tools.ant.taskdefs.Java
import org.mortbay.jetty.{HttpStatus, Request}
import org.mortbay.jetty.{HttpStatus, Request, Server}
import org.mortbay.jetty.handler._
import org.apache.spark.sql.hive._
import org.apache.spark.{SparkContext,SparkConf}
/**
* Created by tsq on 2016-10-04.
*/
object MainThread extends AbstractHandler {
var _server: Server = null
override def handle(target: String,
request: HttpServletRequest,
response: HttpServletResponse,
dispatch: Int): Unit = {
val url = request.getRequestURI
url.sub