Python 3.x 在Kubernetes上运行Spark作业时,如何避免POD的压力状况及其最终被逐出?

Python 3.x 在Kubernetes上运行Spark作业时,如何避免POD的压力状况及其最终被逐出?,python-3.x,apache-spark,kubernetes,pyspark,Python 3.x,Apache Spark,Kubernetes,Pyspark,我想重新划分数据集,然后将其写入目标路径。但是,由于磁盘压力,我的播客被逐出。Spark只显示它丢失了一个工作进程,但当我在OpenShift控制台中看到事件时,我看到pod(工作进程)被逐出 下面是我如何重新分区的: df = df.repartition("created_year", "created_month", "created_day") df.write.partitionBy("created_year&qu

我想重新划分数据集,然后将其写入目标路径。但是,由于
磁盘压力
,我的播客被逐出。Spark只显示它丢失了一个工作进程,但当我在OpenShift控制台中看到
事件时,我看到pod(工作进程)被逐出

下面是我如何重新分区的:

df = df.repartition("created_year", "created_month", "created_day")
df.write.partitionBy("created_year", "created_month", "created_day").mode("overwrite").parquet(dest_path)
大约有38k个分区:

Job Id  ▾
Description
Submitted
Duration
Stages: Succeeded/Total Tasks (for all stages): Succeeded/Total
1   
parquet at NativeMethodAccessorImpl.java:0
(kill)parquet at NativeMethodAccessorImpl.java:0    2020/08/11 21:35:46 1.5 h   0/2 
2166/38281 (5633 failed)
Spark配置如下所示:

def create_spark_config(spark_cluster, executor_memory='16g', executor_cores='4', max_cores='16'):
    print('Spark cluster is: {}'.format(spark_cluster))
    sc_conf = (
        pyspark.SparkConf().setMaster(spark_cluster) \
        .set('spark.driver.host', HOSTNAME) \
        .set('spark.driver.port', 42000) \
        .set('spark.driver.bindAddress', '0.0.0.0') \
        .set('spark.driver.blockManager.port', 42100) \
        .set('spark.executor.memory', '5G') \
        .set('spark.driver.memory', '3G') \
        .set('spark.sql.parquet.enableVectorizedReader', True) \
        .set('spark.sql.files.ignoreCorruptFiles', True)
    )
    return sc_conf
我无法找出导致磁盘压力的原因,如何才能阻止它

我读了一些关于DiskPressure及其处理的答案和文章,但它们更一般,与Spark无关


Spark有6个工作线程,每个工作线程都有5GB内存和6个内核。

DiskPressure是指容器的磁盘使用量大幅增加,导致运行pod的节点面临磁盘可用性问题。这种嘎吱声有点像