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