Spark安装和使用
1.下载spark并安装,本教程安装spark-2.4.0版本,首先将群里面的spark-2.4.0-bin-without-hadoop.tgz压缩包通过finalshell上传至linux中,通过以下方式上传

上传成功结果如下:

2.能够成功安装spark 2.4.0的前提是我们已经成功安装hadoop3.1.3和Java JDK1.8(这一步之前安装hadoop的时候已经完成)
3.安装spark(local模式)
cd ~
sudo tar -zxvf
./spark-2.4.0-bin-without-hadoop.tgz -C /usr/local
cd /usr/local
ls

sudo mv ./s
park-2.4.0-bin-without-hadoop/ ./spark
sudo chown -R hadoop ./spark
cd ./spark/conf
ls

cp spark-env.sh.template spark-env.sh
vim spark-env.sh
在spark-env.sh的首部加入这行内容
export SPARK_DIST_CLASSPATH=$(/usr/local/hadoop/bin/hadoop classpath)
配置完成后就可以直接使用,通过运行Spark自带的示例,验证Spark是否安装成功。
cd /usr/local/spark
bin/run-example SparkPi
执行时会输出非常多的运行信息,输出结果不容易找到,可以通过 grep 命令进行过滤(命令中的 2>&1 可以将所有的信息都输出到 stdout 中,否则由于输出日志的性质,还是会输出到屏幕中):
bin/run-example SparkPi 2>&1 | grep “Pi is”

说明运行已经成功了!说明spark安装成功!
4.在 Spark Shell 中运行代码
./bin/spark-shell
进入spark shell界面如下:

现在就可以在这个界面写scala代码进行调试了
scala> val textFile=sc.textFile("file:///usr/local/spark/README.md")
scala> textFile.first()
scala> textFile.count()
scala> val lineWithSpark=textFile.filter(line=>line.contains("Spark"))
scala> lineWithSpark.count()
scala> :quit
5.spark主要操作对象是RDD,RDD可以通过多种方式灵活创建,可通过导入外部数据源建立,或者从其他的RDD转化而来

通过下面的语句可以将一个文件内容加载进一个RDD

Spark分为两种操作类型

常用的Action API介绍

常用的Transformation API介绍

6.Java独立应用编程
6.1首先安装maven
ubuntu中和centos中都没有自带安装maven,需要手动安装maven。首先下载群里面的apache-maven-3.6.3-bin.zip,并将其压缩包通过finalshell上传至linux中

安装maven
sudo unzip ./ap
ache-maven-3.6.3-bin.zip -d /usr/local
cd /usr/local
sudo mv apache-maven-3.6.3 maven
sudo chown -R hadoop ./maven
6.2Java应用程序代码
在终端执行如下命令创建一个文件夹sparkapp2作为应用程序根目录
cd ~
mkdir sparkapp2
cd sparkapp2
mkdir -p src/main/java
cd src/main/java
vim SimpleApp.java
在SimpleApp.java中加入这些内容:
/*** SimpleApp.java ***/
import org.apache.spark.api.java.*;
import org.apache.spark.api.java.function.Function;
public class SimpleApp {
public static void main(String[] args) {
String logFile = "file:///usr/local/spark/README.md"; // Should be some file on your system
JavaSparkContext sc = new JavaSparkContext("local", "Simple App",
"file:///usr/local/spark/", new String[]{"target/simple-project-1.0.jar"});
JavaRDD<String> logData = sc.textFile(logFile).cache();
long numAs = logData.filter(new Function<String, Boolean>() {
public Boolean call(String s) { return s.contains("a"); }
}).count();
long numBs = logData.filter(new Function<String, Boolean>() {
public Boolean call(String s) { return s.contains("b"); }
}).count();
System.out.println("Lines with a: " + numAs + ", lines with b: " + numBs);
}
}
然后在命令行执行如下:
cd ~/sparkapp2
ls
vim pom.xml
在pom.xml中加入如下内容
<project>
<groupId>edu.berkeley</groupId>
<artifactId>simple-project</artifactId>
<modelVersion>4.0.0</modelVersion>
<name>Simple Project</name>
<packaging>jar</packaging>
<version>1.0</version>
<repositories>
<repository>
<id>Akka repository</id>
<url>http://repo.akka.io/releases</url>
</repository>
</repositories>
<dependencies>
<dependency> <!-- Spark dependency -->
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.11</artifactId>
<version>2.1.0</version>
</dependency>
</dependencies>
</project>
查看以下内容:
find .

接着,我们可以通过如下代码将这整个应用程序打包成Jar(注意:电脑需要保持连接网络的状态,而且首次运行mvn package命令时,系统会自动从网络下载相关的依赖包,同样消耗可能几个小时的时间,反正我第一次打包花了五个小时,后面再次运行mvn package命令,速度就会快很多):
/usr/local/maven/bin/mvn package
下面是打包成功的截图:

ls
cd target
ls

cd /usr/local/spark
./bin/spark-submit --class "SimpleApp" ~/sparkapp2/target/simple-project-1.0.jar
./bin/spark-submit --class "SimpleApp" ~/sparkapp2/target/simple-project-1.0.jar 2>&1 | grep "Lines with a"

更多推荐

所有评论(0)