2月27日

完成了性能优化的代码示例,通过调整配置参数和优化代码,提升了Spark程序的性能:

 
复制代码
 
复制代码
from pyspark.sql import SparkSession
from pyspark.sql.functions import col

# 创建SparkSession
spark = SparkSession.builder \
    .appName("Spark Performance Optimization Example") \
    .config("spark.executor.memory", "4g") \  # 调整Executor内存
    .config("spark.executor.cores", "4") \   # 调整Executor核心数
    .config("spark.driver.memory", "2g") \   # 调整Driver内存
    .config("spark.sql.shuffle.partitions", "200") \  # 调整Shuffle分区数
    .config("spark.locality.wait", "3s") \   # 调整数据本地性等待时间
    .getOrCreate()

# 读取数据
df = spark.read.csv("hdfs://path/to/input.csv", header=True, inferSchema=True)

# 内存管理优化:缓存中间结果
df.cache()

# 数据本地性优化:尽量保证数据和计算在同一节点
# 确保数据在节点上均匀分布
df.repartition(200).write.mode("overwrite").parquet("hdfs://path/to/repartitioned_data.parquet")

# 任务调度优化:调整并行度
# 使用广播变量优化小表连接
from pyspark.sql.functions import broadcast
small_df = spark.read.csv("hdfs://path/to/small_table.csv", header=True, inferSchema=True)
optimized_df = df.join(broadcast(small_df), df.id == small_df.id, "inner")

# 优化计算逻辑:减少Shuffle操作
# 通过过滤和转换减少数据量
filtered_df = optimized_df.filter(col("value") > 100)
transformed_df = filtered_df.withColumn("new_value", col("value") * 2)

# 写入优化后的结果
transformed_df.write.mode("overwrite").parquet("hdfs://path/to/output.parquet")

# 停止SparkSession
spark.stop()
复制代码

 

复制代码
posted @   KuanDong24  阅读(2)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 【杂谈】分布式事务——高大上的无用知识?
点击右上角即可分享
微信分享提示