㈠ Spark 中用 Scala 和 java 开发有什么区别
Scala到底是什么?在目前众多的JVM语言当中,Scala无疑是最引人注意的语言之一。Scala是一个静态语言,更适合大型工程项目,Scala直接编译成Java字节码,性能接近Java。Scala是一个多范式的语言,你可以混合使用函数式和面向对象编程,混合使用可变类和不变类,混合使用Actor和传统的Java并发库。
短短一个月的时间,Scala于本月冲进了TIOBE的前五十名。一个 Twitter 的开发人员说过,Scala 将会成为现代 Web2.0 的发起语言。LinkedIn 也用这种语言。同样许多其他大的公司如 Sony Picture, EDF, SAP 也开始使用这种语言。为什么Scala发展这么迅猛,可以获得如此热烈的社区支持。
曾冠东还表示,Scala不是Java的杀手,它无法取代Java的地位,也突破不了JVM的限制、Java实现不了的功能它也实现不了。我们可以将Scala形象的理解成大量语法糖的Java。
Scala 开发团队发布了最新的2.9.2稳定版本,Scala 语言的特性有许多,例如高阶函数和对象、抽象类型绑定,actor 使得函数在 Scala 中能是一个子类成为可能,Scala 中的设计模式使得面向对象和函数编程无缝结合。Akka 是一个用 Scala 编写的库,用于简化编写容错的、高可伸缩性的 Java 和 Scala 的 Actor 模型应用。它已经成功运用在电信行业。Spark 是一种可扩展的数据分析平台,它整合了内存计算的基元,因此,相对于 Hadoop 的集群存储方法,它在性能方面更具优势。Spark 是在 Scala 语言中实现的,并且利用了该语言,为数据处理提供了独一无二的环境。Scala 编译器可以生成字节码,直接运行在使用JVM上。该语言(它实际上代表了可扩展语言)被定义为可直接集成到语言中的简单扩展。
Scala作为一门静态语言,它的主要特性有哪些?
· Scala是面向对象的
Scala是一个纯面向对象语言,在某种意义上来讲所有数值都是对象。对象的类型和行为是由class和trait来描述的。Class的抽象可由子类化和一种灵活的基于mixin的组合机制(它可作为多重继承的简单替代方案)来扩展。
· Scala是函数式的
Scala还是一个函数式语言,在某种意义上来讲所有函数都是数值。Scala为定义匿名函数提供了一种轻量级的语法,它支持高阶(higher-order)函数、允许函数嵌套、支持局部套用(currying)。Scala的case类及其内置支持的模式匹配模型代数类型在许多函数式编程语言中都被使用。
· Scala是静态类型的
Scala配备了一套富有表现力的类型系统,该抽象概念以一种安全的和一致的方式被使用。
· Scala是可扩展的
Scala的设计承认了实践事实,领域特定应用开发通常需要领域特定语言扩展。Scala提供了一个独特的语言组合机制,这可以更加容易地以类库的形式增加新的语言结构:
任何方式可以被用作中缀(infix)或后缀(postfix)操作符闭包按照所期望的类型(目标类型)自动地被构造
两者结合使用可方便地定义新语句,无需扩展语法,也无需使用类似宏的元编程工具。
· Scala可与Java和.NET进行互操作
Scala设计时就考虑了与流行编程环境良好交互,如Java 2运行时环境(JRE)和 .NET框架(CLR)。特别是与主流面向对象语言,如Java和C#尽量无缝交互。Scala有像Java和C#一样的编译模型(独立编译,动态装载类),允许访问成千上万的高质量类库。
在并发性方面,与 Scala 在 .NET 领域中的姐妹语言 F# 相似,Scala 是针对 “并发性问题” 的解决方案之一,让开发人员能够更加轻松地专注于问题的实质,而不用考虑并发编程的低级细节。Actor 编程模式让高度并行应用程序的开发更加简单。Scala把Erlang风格的基于actor的并发带进了JVM。我们可以利用Scala的actor模型在JVM上设计具伸缩性的并发应用程序,以自动获得多核心处理器带来的优势,而不必依照复杂的Java线程模型来编写程序。Scala 为并发性提供了两种级别的支持,这与其他与 Java 相关的主题极为类似:
首先,对底层库的完全访问(比如说 java.util.concurrent)以及对 “传统” Java 并发性语义的支持(比如说监控程序和wait()/notifyAll())。其次,这些基本机制上面有一个抽象层
Scala 提供了在稳定的高性能平台(Java 虚拟机)上生成的能力同时也是一门敏捷性语言。这一类型的语言也有其他的选择,例如 Jython, JRuby, Groovy 和 Clojure, 但是这些都是运行在 JVM 上的动态类型语言。Open Class 的效果让大家会觉得Scala是动态语言,但它是选择隐式转换来实现的,这也正好证明了Scala是静态语言。隐式转换(Implicit conversion)使 Scala 具有类型安全性,正如扩展方法(extension method)之于 C#,开放类(open class)之于 ruby。即:向未曾定义的类型添加方法(如字符串、列表、整数)。这是使得 Scala 符合 DSL(特定领域语言)模型的特性之一。
Scala结合了面向对象和函数编程的优势,函数编程的一个好处就是你能够像运用一个数据那样运用函数,可以用来定义真正高层级的库,或者去定义新的领域特殊语言(DSL)。
在谈及Java与Scala的对比时,曾冠东表示,Scala能调用绝大部分的Java,而Java调用Scala独有的东西会比较难。Java 拥有非常强的概念规范,因此任何一个 Java 程序之间具有非常多的相似之处,并且这样能够方便的进行程序员交替。但是 Scala 并没有这样的统一性,因为这是一门很有表现力的语言。现场曾冠东为我们演示了实际案例,如下图所示:
正所谓,金无足赤,人无完人。Scala对二进制不兼容,语法也越来越复杂,不能突破Bytecode的限制、编译速度有所缓慢。当它被广泛用于单元测试、开发工具、Socket开发、以及面对多核挑战的并发应用。总而言之,Scala是一种函数式面向对象语言,它融汇了许多前所未有的特性,而同时又运行于JVM之上。正如JRuby 创建者之一Charles Nutter 所宣称的那样Scala就是 Java 王位的合法继承人。随着开发者对Scala的兴趣日增,以及越来越多的工具支持,无疑Scala语言将成为广大软件工程师手上一件必不可少的工具。
㈡ 2014到现如今有哪些java web 开发的新技术
Java 的web框架太多了
JSF, Netty, Seam, Sitemesh,Spark, Spring MVC, Stripes,Struts, VRaptor,
Wicket,Tapestry,Vert.x ;Scala的Lift, Scalatra,Play
Groovy的Grails;Clojure的Cascade, Conjure, Compojure,Noir
2014后出现的框架和技术并不多,一下几款算近几年出吧,其中Spring Boot算最火吧,
Spark更轻量些。
Spring (Boot),Dropwizard,Sparkjava,ninjaframework,ratpack
附上出处链接:https://www.hu.com/question/38895245
㈢ 如何用java代码替代spark-submit脚本
例子:在开发web项目结合spark云平台时遇到一个难题,当一个类继承了ActionSupport成为一个action后,在它的method()中不能调用spark程序(会报找不到spark jar包的错误,不知道怎么解决)。
解决方案:把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 ModelDriven<RecommendationArguments> {
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());
http://www..com/s?wd=52014085078
㈣ spark数据处理平台如何与javaweb系统整合
简单讲就是执行sparksql任务,用户在界面输入sql语句,执行查询,web项目通过调用spark集群执行计算,并返回数据,最后展示到页面上
㈤ spark可以用java开发吗
Spark Framework - A tiny Java web framework
当然可以使用Java开发了
㈥ javaweb怎么调用 spark集群
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
㈦ Web前端 Java和大数据有什么关系
简单的说Java语言是做大数据研发的工具之一,不少早期做大数据平台开发的程序员都是做Java开发出身,而且Hadoop平台本身就是采用Java语言开发的,所以很多做大数据开发的程序员第一个排序实验都是使用Java语言开发的。所以,Java是早期做大数据开发的基础之一。
大数据确切的说,它并不能算一门具体的技术,而是一种概念,一种大的技术范畴。大数据主要是用来处理,分析,存储海量数据,对这些大量的数据进行加工处理等操作。大数据领域里面涉及到Hadoop,hive,flink,hbase,java等各种具体的技术,看清楚,在这里Java也可以为大数据的实现提供服务哦。所以可以说,Java可以帮助我们实现大数据的开发,Java就像是一个“建筑工人",它可以把各种数据原料整合在一起,构建出大数据这么一个环境。
通常情况下,我们说的大数据,是指基于Hadoop的大数据生态,在这个生态中,有很多很多的产品,每个产品负责解决大数据整体方案中的一个问题,如Hadoop自身包含MapRece,Yarn,HDFS等,MapRece 负责批处理计算,HDFS负责的分布式存储,YARN负责资源管理,其他如HBASE负责数据存储,等等。这些大数据生态中的不同产品,大部分都是由Java开发的,所以说它们与Java密不可分。
由于软件自身由Java开发,因此基本这些大数据产品做开发,Java语言就是首选,因为这些产品基本都提供Java语言的编程接口API。
还有一些产品,虽然不是用Java语言开发,但是使用了基于JVM的语言,如Spark是由Scala语言开发的,而Scala是基于JVM的,这就意味着可以进行Scala与Java的混合开发,同样离不开Java。
大数据框架的编写支持很多开发语言,但是Java在大数据开发方面有很大的优势,目前流行的大数据Hadoop框架,很多部分都是用开源的Java语言编写,因此Java在大数据方面有很大优势。在大数据的中,也许别的你可能不在意,但是Hadoop想必你是注意到了的吧,大数据中不得不学的重要内容。
关于Java和大数据有什么关系,青藤小编就和您分享到这里了。如果您对大数据工程有浓厚的兴趣,希望这篇文章可以为您提供帮助。如果您还想了解更多关于数据分析师、大数据工程师的技巧及素材等内容,可以点击本站的其他文章进行学习。
㈧ 怎么开发一个基于spark的web实时查询web程序
话说不需要吧,spark不是提供java的api吗,直接在web后台引入spark的包然后调用api就能提交东西吧 如果东西多本地放不下,在hdfs上的话,也可以调用得到的,没必要非得打成包。我说的不是本地模式,是吧本地也看成是一个节点,虽然没干过,不过本地压力应该不小。
㈨ java web如何去调用一个spark程序
java web如何去调用一个spark程序
{;{voidonArticleSelected(intposition);}@OverridepublicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setListAdapter(newArrayAdapter<String>(getActivity(),R.layout.fragment_list,Ipsum.Headlines));}@OverridepublicvoidonAttach(Activityactivity){super.onAttach(activity);mCallback=(OnHeadlineSelectedListener)activity;}@(ListViewl,Viewv,intposition,longid){mCallback.onArticleSelected(position);getListView().setItemChecked(position,true);}}