Spark使用指南
更新时间:2024-05-24
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