Apache Spark 是一个统一的分析引擎,用于处理大规模数据。 Apache spark 提供了通过使用 API 与其他编程语言(如Java、 Python、R 等)连接的功能。它提供了一种简单的方法来配置其他 IDE 以及根据您的要求执行我们的任务。它支持诸如用于 SQL 的 Spark SQL、用于图形处理的 GraphX、用于机器学习的 MLlib 等工具。
在此,您将看到我们如何配置 Scala IDE 以执行 Apache Spark 代码。您将能够学习在 Scala IDE 中配置 Spark 项目,而无需在您的系统中明确安装 Hadoop 和 Spark。我们将详细讨论每个步骤,您将能够使用这些步骤进行配置。此外,还将介绍配置所需的依赖项,我们还将介绍配置 Scala IDE 所需的先决条件。在这里,我们将讨论并在 Scala IDE 上实现所有步骤。但是,任何其他 IDE 也可以遵循这些步骤。如果您想在 Eclipse IDE 上配置它,那么 Eclipse IDE 也可以遵循相同的步骤。
介绍
- Spark 是加州大学AMPLab于 2009 年开发的开源分布式大数据处理框架。
- 后来 Spark 被捐赠给了 Apache 软件基金会。现在,它由 Apache 基金会维护。
- Spark 是主要的大数据处理引擎,它是一种编写的 Scala 编程语言。
- 最初,Hadoop 中有 MapReduce(基于Java编程语言)处理模型。
- Spark 框架支持Java、Scala、 Python和 R 编程语言。
基于数据类型和功能,Spark 有一个不同的 API 来处理如下:
- Spark 的基本构建块是 Spark 核心。
- Spark 提供 SparkSQL 用于基于 DataFrame 和 Dataset 的结构化和半结构化数据分析。
- 对于流式数据 Spark 具有 Spark Streaming API。
- 为了实现机器学习算法,Spark 提供了 MLib,即分布式机器学习框架。
- Graph 数据可以用 GraphX 有效地处理,即分布式图处理框架。
SparkSQL、Spark Streaming、MLib 和 GraphX 基于 Spark 核心功能和 RDD 的概念,即弹性分布式数据集。 RDD 是分布式分区数据集的不可变集合,存储在 Hadoop 集群中的数据节点上。
先决条件:
- Java。确保您的系统上安装了Java 。
- Scala IDE/Eclipse/Intellij IDEA:您可以使用其中任何一个,只要您熟悉。在这里,您将看到 Scala IDE 供您参考。
第 1 步:创建 Maven 项目
创建一个 Maven 项目非常简单。请按照以下步骤创建项目。
- 单击文件菜单选项卡 ->新建->其他
- 单击Maven 项目。在这里,在这一步点击“ Create a simple project(skip archtype selection) ”复选框,然后点击“ Next> ”
- 添加Group Id和Artifact Id ,然后点击“ Finish ”
至此,您已经成功地使用 Maven 创建了一个Java项目。现在,下一步是为 Spark 添加依赖项。
第 2 步:将所需的 Spark 依赖项添加到 pom.xml
您可以在新创建的 maven 项目中找到 pom.xml 文件并在 Spark(spark-core, spark-sql) 依赖项下添加。您可以根据项目需要更改这些依赖项版本。
注意:可以看到 Spark-core 和 spark-sql 添加了 2.4.0 依赖。 Spark 3.0.1 版本也可用,您可以根据您在集群上的 Spark 版本和您的项目需求添加依赖项。
XML
4.0.0
java.spark
Spark-Learning
0.0.1-SNAPSHOT
com.thoughtworks.paranamer
paranamer
2.8
org.apache.spark
spark-core_2.12
2.4.0
org.apache.spark
spark-sql_2.12
2.4.0
Java
package spark.java;
import org.apache.spark.sql.Dataset;
import org.apache.spark.sql.Row;
import org.apache.spark.sql.SparkSession;
public class SparkReadCSV {
public static void main(String[] args)
{
// Set winutils.exe file path
System.setProperty("hadoop.home.dir",
"D:\\Hadoop\\");
// Create a SparkSession object to process the data
// Function builder() used for creating SparkSession
// object
// Function appName() set a name for the application
// which will be show in YARN/Spark web UI.
// Function master() set a spark master URL to run
// application, such "local" to run locally OR
// "local[3]" to run with 3 cores OR "yarn-cluster"
// to run on YARN Hadoop cluster.
// Function getOrCreate() return a Spark session to
// execute application.
SparkSession spark
= SparkSession
.builder()
.appName("***** Reading CSV file.*****")
.master("local[3]")
.getOrCreate();
// Read sample CSV file.
// Read used to read data as a DataFrame.
// The boolean value in option function indicate that
// input data first line is header.
// The delimiter value("|") in option indicate that
// files records are | separated.
// function csv() is accept input data file path
// either from Local File System OR Hadoop Distributed
// File System.
// Here we are reading data from Local File System.
Dataset employeeDS
= spark
.read()
.option("header", true)
.option("delimiter", "|")
.csv("D:\\data\\employee.txt");
// Displaying the records.
employeeDS.show();
}
}
第 3 步:编写示例 Spark 代码
现在,您几乎完成了。只需创建一个名为 spark 的包。 Java在您的项目中。然后在新创建的包中,创建一个Java类 SparkReadCSV。由于我们没有在系统上安装 Hadoop,我们仍然可以简单地下载winutils文件并将该路径添加为 Hadoop 主目录路径。
以下是我们执行此操作所需的几个步骤。
- 下载 winutils.exe 文件。 https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-winutils/2.4.1
- 在您的驱动器上创建一个 Hadoop\bin 目录。在这里,就我而言,我在 D: 驱动器中创建了 Hadoop\bin 文件夹。
- 将 winutils.exe 文件复制到 D:\\hadoop\\bin 文件夹。
- 最后在 SparkReadCSV 中。 Java文件将 Hadoop 主目录添加到上述路径。像这样如下。
System.setProperty("hadoop.home.dir", "D:\\Hadoop\\");
创建一个employee.txt 文件并添加以下虚拟记录。
id | name | address | salary |
---|---|---|---|
1 | Bernard Norris | Amberloup | 10172 |
2 | Sebastian Russell | Delicias | 18178 |
3 | Uriel Webster | Faisalabad | 16419 |
4 | Clarke Huffman | Merritt | 16850 |
5 | Orson Travis | Oberursel | 17435 |
将以下代码添加到SparkReadCSV。 Java文件。您可以使用非常描述性的注释检查下面给出的代码,以便更好地理解。
代码:
Java
package spark.java;
import org.apache.spark.sql.Dataset;
import org.apache.spark.sql.Row;
import org.apache.spark.sql.SparkSession;
public class SparkReadCSV {
public static void main(String[] args)
{
// Set winutils.exe file path
System.setProperty("hadoop.home.dir",
"D:\\Hadoop\\");
// Create a SparkSession object to process the data
// Function builder() used for creating SparkSession
// object
// Function appName() set a name for the application
// which will be show in YARN/Spark web UI.
// Function master() set a spark master URL to run
// application, such "local" to run locally OR
// "local[3]" to run with 3 cores OR "yarn-cluster"
// to run on YARN Hadoop cluster.
// Function getOrCreate() return a Spark session to
// execute application.
SparkSession spark
= SparkSession
.builder()
.appName("***** Reading CSV file.*****")
.master("local[3]")
.getOrCreate();
// Read sample CSV file.
// Read used to read data as a DataFrame.
// The boolean value in option function indicate that
// input data first line is header.
// The delimiter value("|") in option indicate that
// files records are | separated.
// function csv() is accept input data file path
// either from Local File System OR Hadoop Distributed
// File System.
// Here we are reading data from Local File System.
Dataset employeeDS
= spark
.read()
.option("header", true)
.option("delimiter", "|")
.csv("D:\\data\\employee.txt");
// Displaying the records.
employeeDS.show();
}
}
我们已经通过几个简单的步骤设置了一个 Spark 开发环境。以此为出发点,我们可以通过解决不同的用例来进一步探索 Spark。