# 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 演示或针对特定场景的示例吗?
 

 

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐