重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
例子:在开发web项目结合spark云平台时遇到一个难题,当一个类继承了ActionSupport成为一个action后,在它的method()中不能调用spark程序(会报找不到spark jar包的错误,不知道怎么解决)。
创新互联为企业级客户提高一站式互联网+设计服务,主要包括成都网站设计、成都网站建设、重庆App定制开发、小程序开发、宣传片制作、LOGO设计等,帮助客户快速提升营销能力和企业形象,创新互联各部门都有经验丰富的经验,可以确保每一个作品的质量和创作周期,同时每年都有很多新员工加入,为我们带来大量新的创意。
解决方案:把spark程序打包成jar文件,写一个脚本,在action的method()中调用这个脚本,运用spark-submit启动spark程序。
脚本代码 ,CRS.sh :
/usr/local/spark/spark-1.0.0-bin-hadoop1/bin/spark-submit \
--class ar.runCourseCF \
--master local[4] \
/root/IdeaProjects/HelloWorld/web/WEB-INF/lib/test.jar
struts2 的 action类:
public class recommendationAction extends ActionSupport
implements ModelDrivenRecommendationArguments {
private RecommendationArguments recommendation = new RecommendationArguments();
public String execute() throws Exception
{
//脚本路径
String shellPath = "/root/IdeaProjects/HelloWorld/src/CRS.sh";
System.out.println(shellPath);
ShellUtil shell = new ShellUtil();
shell.runShell(shellPath);
return SUCCESS;
}
public RecommendationArguments getModel()
{
return recommendation;
}
}
java运行脚本的代码:
public class ShellUtil {
public void runShell(String shellPath)
{
//String shellPath="/root/IdeaProjects/CRS.sh"; //程序路径
try {
Process process = null;
//添加权限
String command1 = "chmod 777 " + shellPath;
process = Runtime.getRuntime().exec(command1);
process.waitFor();
//用sh CRS.sh执行脚本
String command2 = "sh " + shellPath;
Runtime.getRuntime().exec(command2).waitFor();
}catch(Exception e)
{
System.out.println(e.toString());
首先,在SparkShell中运行一下代码importorg.apache.spark._importorg.apache.spark.graphx._//TomakesomeoftheexamplesworkwewillalsoneedRDDimportorg.apache.spark.rdd.RDD//AssumetheSparkContexthasalreadybeencon
1、Spark脚本提交/运行/部署1.1spark-shell(交互窗口模式)运行Spark-shell需要指向申请资源的standalonespark集群信息,其参数为MASTER,还可以指定executor及driver的内存大小。sudospark-shell--executor-memory5g--driver-memory1g--masterspark://192.168.180.216:7077spark-shell启动完后,可以在交互窗口中输入Scala命令,进行操作,其中spark-shell已经默认生成sc对象,可以用:valuser_rdd1=sc.textFile(inputpath,10)读取数据资源等。1.2spark-shell(脚本运行模式)上面方法需要在交互窗口中一条一条的输入scala程序;将scala程序保存在test.scala文件中,可以通过以下命令一次运行该文件中的程序代码:sudospark-shell--executor-memory5g--driver-memory1g--masterspark//192.168.180.216:7077
1、Spark 是基于内存的分布式计算框架,因为无需利用 HDFS 作为中间结果保存的介质,性能杠杠的。Spark 是由 Scala 实现的,所以最好学习一下 Scala(当然用 Python 和 Java 也是可以的)。()
为啥要用 Spark?
快!基于内存
易用!Scala, Java, Python 都支持,还有交互式的 Python 和 Scala 的 shell,可以快速进行原型开发
通用!批处理、交互查询、流处理、机器学习、图计算,样样精通
兼容!可以使用各种现有的技术作为底层,也可以自己独立运行
Spark 生态系统有哪些组件?
Spark SQL: 类似 Hive,支持在不同 RDD 上进行类似 SQL 的操作
Spark Streaming: 对于流数据进行处理
MLlib: 机器学习库
GraphX: 图并行框架
RDD 是什么?
在 Spark 框架中,最重要的是一类新的数据抽象,叫做 Resilient Distributed Dataset - RDD。RDD 是分布式存储在集群中的内存对象,按照值的范围或者哈希结果进行划分。与此同时 RDD 会记录关于数据进行的各种操作(每次操作都会生成新的 RDD),这样即使节点挂掉,也能够根据之前的操作日志重新得到损失的 RDD
RDD 支持2种操作:
转换(transformation):从现有的数据集创建一个新的数据集
动作(actions):在数据集上运行计算后,返回一个值给驱动程序
2、实战java开发spark程序
3、spark集群环境搭建