Spark 使用指南
更新时间:2024-08-15
Spark
Apache Spark 是专为大规模数据处理而设计的快速通用的计算引擎。Spark 是 UC Berkeley AMP Lab (加州大学伯克利分校的AMP实验室)所开源的类 Hadoop MapReduce 的通用并行框架,拥有 Hadoop MapReduce 所具有的优点;但不同于 MapReduce 的是 --Job 中间输出结果可以保存在内存中,从而不再需要读写 HDFS,因此 Spark 能更好地适用于数据挖掘与机器学习等需要迭代的 MapReduce 的算法。
安装
1.Spark 环境准备
Bash
1# 下载到一个路径
2wget https://archive.apache.org/dist/spark/spark-3.1.1/spark-3.1.1-bin-hadoop3.2.tgz
3
4# 解压
5tar -zxvf spark-3.1.1-bin-hadoop3.2.tgz
6
7# 设置环境变量
8SPARK_HOME=/home/hadoop/spark-3.1.1-bin-hadoop3.2
9PATH=$PATH:$HADOOP_HOME/bin:$SPARK_HOME/bin
2.添加依赖 jar 包
下载 BOS-HDFS
Bash
1# 解压,拷贝到spark依赖路径
2unzip bos-hdfs-sdk-1.0.3-community.jar.zip
3cp bos-hdfs-sdk-1.0.3-community.jar {SPARK_HOME}/jars
4
5# 访问BOS的一些必要配置
6cp {SPARK_HOME}/conf/spark-defaults.conf.template {SPARK_HOME}/conf/spark-defaults.conf
7vim {SPARK_HOME}/conf/spark-defaults.conf
8...
9cat {SPARK_HOME}/spark-defaults.conf
10spark.hadoop.fs.bos.access.key={your ak}
11spark.hadoop.fs.bos.secret.access.key={your sk}
12spark.hadoop.fs.bos.endpoint=http://bj.bcebos.com {your bucket endpiont}
13spark.hadoop.fs.AbstractFileSystem.bos.impl=org.apache.hadoop.fs.bos.BOS
14spark.hadoop.fs.bos.impl=org.apache.hadoop.fs.bos.BaiduBosFileSystem
使用
编写 demo.py,读取 my-bucket 中 student.parquet,统计 age > 22 的 student。
Python
1from pyspark.sql import SparkSession
2
3spark = SparkSession.builder.appName("example_app")\
4 .config("spark.driver.bindAddress", "localhost")\
5 .getOrCreate()
6bosFile = "bos://my-bucket/student"
7
8#写入
9data = [("abc",22), ("def",17), ("ghi",34)]
10df = spark.createDataFrame(data, ["name", "age"])
11df.write.parquet(bosFile)
12
13df = spark.read.parquet(bosFile)
14df.printSchema()
15
16df.createOrReplaceTempView("students")
17sqlDF = spark.sql("SELECT * FROM students WHERE age > 22 LIMIT 10")
18sqlDF.show()
运行
Bash
1spark-submit demo.py