Gemini永久会员 Python一个简单的 Apache Spark 演示示例,展示如何使用 Spark 进行数据处理和分析
# Spark Demo 示例
以下是一个简单的 Apache Spark 演示示例,展示如何使用 Spark 进行数据处理和分析。
## 1. 基础 WordCount 示例
```python
from pyspark.sql import SparkSession
# 创建 SparkSession
spark = SparkSession.builder \
.appName("WordCountDemo") \
.getOrCreate()
# 示例文本数据
data = ["Hello Spark", "Hello World", "Spark is awesome"]
# 创建 RDD
rdd = spark.sparkContext.parallelize(data)
# 执行 WordCount
word_counts = rdd \
.flatMap(lambda line: line.split(" ")) \
.map(lambda word: (word, 1)) \
.reduceByKey(lambda a, b: a + b)
# 收集结果并打印
for word, count in word_counts.collect():
print(f"{word}: {count}")
# 停止 SparkSession
spark.stop()
```
## 2. 使用 DataFrame API 的示例
```python
from pyspark.sql import SparkSession
from pyspark.sql.functions import col, sum
# 创建 SparkSession
spark = SparkSession.builder \
.appName("DataFrameDemo") \
.getOrCreate()
# 示例数据
data = [("Alice", 25), ("Bob", 30), ("Charlie", 35)]
columns = ["Name", "Age"]
# 创建 DataFrame
df = spark.createDataFrame(data, columns)
# 显示 DataFrame
df.show()
# 过滤年龄大于30的人
filtered_df = df.filter(col("Age") > 30)
filtered_df.show()
# 按年龄分组求和
grouped_df = df.groupBy().sum("Age")
grouped_df.show()
# 停止 SparkSession
spark.stop()
```
## 3. 从文件读取数据的示例
```python
from pyspark.sql import SparkSession
# 创建 SparkSession
spark = SparkSession.builder \
.appName("FileReadingDemo") \
.getOrCreate()
# 从 CSV 文件读取数据 (假设文件在本地或HDFS上)
# df = spark.read.csv("path/to/file.csv", header=True, inferSchema=True)
# 使用示例数据创建临时 DataFrame
data = [("Alice", 25), ("Bob", 30), ("Charlie", 35)]
df = spark.createDataFrame(data, ["Name", "Age"])
# 将 DataFrame 写入 CSV 文件
# df.write.csv("output/path", header=True)
# 显示 DataFrame 内容
df.show()
# 停止 SparkSession
spark.stop()
```
## 运行 Spark Demo 的步骤
1. **环境准备**:
- 安装 Java JDK 8+
- 安装 Python 3.x
- 下载并安装 Spark (https://spark.apache.org/downloads.html)
- 设置 `SPARK_HOME` 环境变量
- 安装 PySpark: `pip install pyspark`
2. **运行方式**:
- 直接运行 Python 脚本: `python your_script.py`
- 在 spark-submit 中运行: `spark-submit your_script.py`
3. **集群模式**:
- 对于集群部署,需要配置 `spark-defaults.conf` 或通过 `--master` 参数指定
- 例如: `spark-submit --master yarn your_script.py`
## 常见问题解决
1. **内存不足错误**:
- 增加 executor 内存: `--executor-memory 4G`
- 增加 driver 内存: `--driver-memory 2G`
2. **找不到依赖**:
- 使用 `--jars` 参数指定额外依赖
- 或创建 uber jar 包含所有依赖
3. **数据倾斜**:
- 使用 `repartition()` 或 `coalesce()` 重新分配数据
- 对于 join 操作,考虑广播小表
需要更具体的 Spark 演示或针对特定场景的示例吗?
更多推荐


所有评论(0)