spark编程
1. 怎样成为Spark高手
1.熟练掌握Scala语言
Spark框架是采用Scala语言编写的,精致而优雅。要想成为Spark高手,你就必须阅读Spark的源代码,就必须掌握Scala;
虽然说现在的Spark可以采用多语言java、Python等进行应用程序开发,但是最快速的和支持最好的开发API依然并将永远是Scala方式的API,所以你必须掌握Scala来编写复杂的和高性能的Spark分布式程序;
尤其要熟练掌握Scala的trait、apply、函数式编程、泛型、逆变与协变等;
2.精通Spark平台API
掌握Spark中面向RDD的开发模式,掌握各种transformation和action函数的使用;
掌握Spark中的宽依赖和窄依赖以及lineage机制;
掌握RDD的计算流程,例如Stage的划分、Spark应用程序提交给集群的基本过程和Worker节点基础的工作原理等。
3.深入Spark内核
此阶段主要是通过Spark框架的源码研读来深入Spark内核部分:
通过源码掌握Spark的任务提交过程;
通过源码掌握Spark集群的任务调度;
尤其要精通DAGScheler、TaskScheler和Worker节点内部的工作的每一步的细节;
4.掌握基于Spark的核心框架
Spark作为云计算大数据时代的集大成者,在实时流处理、图技术、机器学习、Nosql查询等方面具有显着的优势,我们使用Spark的时候大部分时间都是在使用其上的框架例如Shark、Spark Streaming等:
Spark Streaming是非常出色的实时流处理框架,要掌握其DStream、transformation和checkpoint等;
Spark的离线统计分析功能,Spark1.0.0版本在Shark的基础上推出了SparkSQL,离线统计分析的功能的效率有显着的提升,需要重点掌握;
对于Spark的机器学习和GraphX等要掌握其原理和用法;
5.做商业级别的Spark项目
通过一个完整的具有代表性的Spark项目来贯穿Spark的方方面面,包括项目的架构设计、用到的技术的剖析、开发实现、运维等,完整掌握其中的每一个阶段和细节,这样就可以让您以后可以从容面对绝大多数Spark项目。
2. Spark 中用 Scala 和 java 开发有什么区别
Scala相对于Java的优势是巨大的。熟悉Scala之后再看Java代码,有种读汇编的感觉…… 如果仅仅是写Spark应用,并非一定要学Scala,可以直接用Spark的Java API或Python API。但因为语言上的差异,用Java开发Spark应用要罗嗦许多。好在带lambda的Java 8出来之后有所改善。 在Spark应用开发上,学Scala主要好处有二: 开发效率更高,代码更精简; 使用Spark过程中出现异常情况,在排查时如果对Spark源码比较熟悉,可以事半功倍
3. spark学习需要什么编程语言
spark是scala开发的。应该需要学习下scala。
4. Spark使用的语言是什么
Spark的框架使用Scala语言编写的,简洁而优雅;
Spark的开发目前主要可以使用三种语言:Scala、Java、Python
5. 学习Spark需要哪些基础知识
花一周时间看一下scala,了解一下函数式编程的特性,然后看spark官网教程或者《learning spark》(这本书还没有出版,但是网上有前五章的预览版)。
spark目前的资料非常少,有用的中文资料更是寥寥无几,一定要去英文网站上看。
根据我做完一个spark项目的经验,spark目前还有很多bug,处理特别多的数据时经常会出错。
6. spark编程语言
如果条件许可,公司提供Spark集群机器,在Spark集群机器上进行开发和学习是最好的; 如果条件不允许,在亚马逊云计算平台上构建Spark集群环境也是一种非常理想的选择; 如果纯粹是学习使用,安装单机版的Spark也是可以的
7. Spark支持通过GO语言编写程序吗
最新官方api接口,没有go,所以不支持。
8. spark编程 mysql得不到数据
“这里说明一点:本文提到的解决 Spark insertIntoJDBC找不到Mysql驱动的方法是针对单机模式(也就是local模式)。在集群环境下,下面的方法是不行的。
编程是编定程序的中文简称,就是让计算机代码解决某个问题,对某个计算体系规定一定的运算方式,使计算体系按照该计算方式运行,并最终得到相应结果的过程。
为了使计算机能够理解人的意图,人类就必须将需解决的问题的思路、方法和手段通过计算机能够理解的形式告诉计算机,使得计算机能够根据人的指令一步一步去工作,完成某种特定的任务。这种人和计算体系之间交流的过程就是编程。
在计算机系统中,一条机器指令规定了计算机系统的一个特定动作。
一个系列的计算机在硬件设计制造时就用了若干指令规定了该系列计算机能够进行的基本操作,这些指令一起构成了该系列计算机的指令系统。在计算机应用的初期,程序员使用机器的指令系统来编写计算机应用程序,这种程序称为机器语言程序。
以上内容参考:网络-编程
9. spark shell的交互式编程环境是怎么实现的
cloudera manager装好的spark,直接执行spark-shell进入命令行后,写入如下语句:
val hiveContext = new org.apache.spark.sql.hive.HiveContext(sc)
你会发现没法执行通过,因为cm装的原生的spark是不支持spark hql的,我们需要手动进行一些调整:
第一步,将编译好的包含hive的JAR包上传到hdfs上配置的默认的spark的sharelib目录:/user/spark/share/lib
第二步:在你要运行spark-shell脚本的节点上的/opt/cloudera/parcels/CDH-5.3.0-1.cdh5.3.0.p0.30/lib/spark/lib/目录下面,下载这个jar到这个目录:hadoop fs -get hdfs://n1:8020/user/spark/share/lib/spark-assembly-with-hive-maven.jar(具体路径替换成你自己的)。然后这个目录下面原来会有个软链接spark-assembly.jar指向的是spark-assembly-1.2.0-cdh5.3.0-hadoop2.5.0-cdh5.3.0.jar,我们把这个软链接删除掉重新创建一个同名的软链接:ln -s spark-assembly-with-hive-maven.jar spark-assembly.jar,指向我们刚下载下来的那个JAR包,这个JAR包会在启动spark-shell脚本时装载到driver program的classpath中去的,sparkContext也是在driver中创建出来的,所以需要将我们编译的JAR包替换掉原来的spark-assembly.jar包,这样在启动spark-shell的时候,包含hive的spark-assembly就被装载到classpath中去了。
第三步:在/opt/cloudera/parcels/CDH/lib/spark/conf/目录下面创建一个hive-site.xml。/opt/cloudera/parcels/CDH/lib/spark/conf目录是默认的spark的配置目录,当然你可以修改默认配置目录的位置。
10. 有哪些值得推荐的 Scala/Spark 编程 IDE
至于比较,官方网上只提到了3个IDE,一个是eclipse一个是netbeans还一个就是idea,你说选啥。
至于原因,你用用就知道了。这三个IDE我都用过,当然并不是写Scala而是写Java。一开始学的时候用的是Eclipse,之后用了几次Netbeans之后就把Eclipse抛弃了,再然后接触了Idea之后我就把另外两个都卸载了。现在写Scala就顺理成章的继续用Idea。虽然没有试过用另外两个写Scala是什么样子,但是总体不会有什么变化,只不过是装了一个插件而已。