Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将ApacheSpark与Spring MVC web应用程序集成以进行交互式用户会话_Java_Spring Mvc_Apache Spark_Machine Learning_Apache Spark Mllib - Fatal编程技术网

Java 如何将ApacheSpark与Spring MVC web应用程序集成以进行交互式用户会话

Java 如何将ApacheSpark与Spring MVC web应用程序集成以进行交互式用户会话,java,spring-mvc,apache-spark,machine-learning,apache-spark-mllib,Java,Spring Mvc,Apache Spark,Machine Learning,Apache Spark Mllib,我正在尝试使用ApacheSparkMLLIB构建一个电影推荐系统。 我已经用java编写了一段推荐程序代码,当使用spark submit命令运行时,推荐程序工作正常 我的run命令如下所示 bin/spark submit--jars/opt/poc/spark-1.3.1-bin-hadoop2.6/mllib/spark-mllib_2.10-1.0.0.jar--class“com.recommender.movierensalsextended”--master local[4]/h

我正在尝试使用ApacheSparkMLLIB构建一个电影推荐系统。 我已经用java编写了一段推荐程序代码,当使用
spark submit
命令运行时,推荐程序工作正常

我的run命令如下所示

bin/spark submit--jars/opt/poc/spark-1.3.1-bin-hadoop2.6/mllib/spark-mllib_2.10-1.0.0.jar--class“com.recommender.movierensalsextended”--master local[4]/home/sarvesh/Desktop/spark test/recommender.jar/home/sarvesh/Desktop/spark test/ml last small/movies.csv

现在我想在现实世界场景中使用我的推荐程序,作为一个web应用程序,在其中我可以查询推荐程序以给出一些结果

我想构建一个springmvcweb应用程序,它可以与apachespark上下文交互,并在被询问时给出结果

我的问题是如何构建一个与集群上运行的apachespark交互的应用程序。因此,当一个请求到达控制器时,它应该接受用户查询并获取与控制台上的
spark submit
命令输出相同的结果

据我搜索,我发现我们可以使用Spark SQL,与JDBC集成。但我没有找到任何好的例子


提前感谢。

要与数据模型交互(调用其调用方法?),可以在驱动程序中构建rest服务。此服务侦听请求,并使用来自请求的输入调用模型的predict方法,并返回结果

http4s()可用于此目的

Spark SQL与此无关,因为它使用SQL功能处理数据分析(您已经完成了)


希望这有帮助。

针对这种情况,开发了一个REST界面,用于午餐和共享spark jobs的上下文

请查看此处的文档:


要隔离用户会话并以隔离的方式显示结果,您可能需要使用具有绑定用户标识的队列。如果结果需要时间,使用此标识,您可以向用户显示相应的结果。

只需在Spring中将spark上下文和会话作为bean传递即可

@Bean
public SparkConf sparkConf() {
    SparkConf sparkConf = new SparkConf()
            .setAppName(appName)
            .setSparkHome(sparkHome)
            .setMaster(masterUri);

    return sparkConf;
}

@Bean
public JavaSparkContext javaSparkContext() {
    return new JavaSparkContext(sparkConf());
}

@Bean
public SparkSession sparkSession() {
    return SparkSession
            .builder()
            .sparkContext(javaSparkContext().sc())
            .appName("Java Spark Ravi")
            .getOrCreate();
}
类似地,对于基于xml的配置

这里提供了带弹簧和火花的完整工作代码


我有点晚了,但这可以帮助其他用户。 如果需要从远程获取数据,那么可以考虑使用HiVERIFIFTServer 2。 此服务器将Spark SQL(缓存表和临时表)公开为JDBC/ODBC数据库

因此,您可以使用JDBC/ODBC驱动程序连接到Spark,并从SQL表访问数据

要执行上述操作:

  • 在Spark应用程序中包含以下代码:

    A.创建具有以下属性的Spark conf:

    config.set("hive.server2.thrift.port","10015");
    config.set("spark.sql.hive.thriftServer.singleSession", "true");
    
    B.然后,将SQL上下文传递给thrift server,并按如下方式启动它:

     HiveThriftServer2.startWithContext(session.sqlContext());
    
  • 这将使用应用程序的SQL上下文启动Thrift server。因此,它将能够从在此上下文中创建的表中返回数据

  • 在客户端,您可以使用以下代码连接到Spark SQL:

    Connection con = DriverManager.getConnection("jdbc:hive2://localhost:10015/default", "", "");
    
    Statement stmt = con.createStatement();            
    ResultSet rs = stmt.executeQuery("select count(1) from ABC");
    

  • 嗨,你找到解决办法了吗?我也有类似的要求。谢谢