Spark入门:RDD详解与SparkShell使用

0 下载量 40 浏览量 更新于2024-08-30 收藏 128KB PDF 举报
“Spark学习-day1,讲解Spark RDD和Spark Shell的使用,以及Spark与Hadoop的关系,探讨数据处理和内存管理。提供了Spark应用的基本架构和RDD的概念,还提及了在IDEA中配置Spark项目的步骤。” 在Spark的学习旅程中,第一天通常会涉及到Spark的基础知识,特别是RDD(Resilient Distributed Dataset)和Spark Shell的使用。RDD是Spark的核心数据抽象,它是一个不可变、分区的元素集合,能够在集群中进行并行操作。RDD可以从Hadoop文件系统或其他Hadoop支持的文件系统中读取数据,或者从现有Scala集合中创建。 Spark Shell是用于交互式测试和调试Spark程序的工具,通过命令行界面提供Spark的功能。例如,可以使用以下两种方式启动Spark Shell: 1. 通过YARN管理资源,使用`--master yarn`,在客户端模式下运行,指定`--deploy-mode client`,设置执行器核心数为4,执行器数量为3,命令如下: ``` ./bin/spark-shell --master yarn --deploy-mode client --executor-cores 4 --num-executors 3 ``` 2. 在Spark Standalone集群上运行,指定`--master spark://zly:7077`,设置总执行器核心数为6,命令如下: ``` ./bin/spark-shell --master spark://zly:7077 --total-executor-cores 6 ``` Spark与Apache Hadoop之间的关系密切,Spark设计为与Hadoop数据兼容,可以在Hadoop集群中运行,通过YARN或Spark Standalone模式。Spark不仅支持批处理,类似于MapReduce,还提供了流计算、Spark SQL(用于交互式查询)和机器学习库MLlib等功能,以满足更广泛的计算需求。 关于数据处理,Spark并不强制所有数据必须完全放入内存。当数据量超过内存时,Spark会自动将数据溢写到磁盘,这得益于其弹性特性。用户还可以通过设置RDD的存储级别来控制数据的缓存策略,如选择内存、磁盘或两者混合。如果内存不足,RDD能够从磁盘中恢复,确保容错性。 在开发环境中,如IDEA,构建Spark应用通常需要添加Spark和Hadoop的相关依赖,例如: - Spark Core(对应Scala版本2.11):`org.apache.spark:spark-core_2.11:2.4.5` - Hadoop Client:`org.apache.hadoop:hadoop-client:2.9.2` 完成依赖配置后,就可以在IDEA中编写Spark驱动程序,并将其远程部署到Spark集群上运行。 总结来说,Spark的学习涵盖了基本概念、数据处理机制、Shell使用以及集群配置等多个方面,为后续深入学习Spark的编程模型和高级特性奠定了基础。