首页 > 解决方案 > Spark 作业仅停留在一项任务上

问题描述

我已经用 YARN 设置了 Spark 3.x 和 Hadoop 3.x。我必须使用分布式数据管道(即通过 Spark)简单地索引一些数据。以下是我用于 spark 应用程序 (pyspark) 的代码片段

def index_module(row ):
    pass


def start_job(DATABASE_PATH):

    global SOLR_URI
    warehouse_location = abspath('spark-warehouse')
    spark = SparkSession \
        .builder \
        .appName("Python Spark SQL Hive integration example") \
        .config("spark.sql.warehouse.dir", warehouse_location) \
        .enableHiveSupport() \
        .getOrCreate()

    solr_client = pysolr.Solr(SOLR_URI)
    df = spark.read.format("csv").option("quote", "\"").option("escape", "\\").option("header", "true").option(
        "inferSchema", "true").load(DATABASE_PATH)
    df.createOrReplaceTempView("abc")
    df2 = spark.sql("select * from abc")
    df2.toJSON().map(index_module).collect()

    solr_client.commit()

if __name__ == '__main__':

    try:
        DATABASE_PATH = sys.argv[1].strip()
    except:
        print("Input file missing !!!", file=sys.stderr)
        sys.exit()

    start_job(DATABASE_PATH)

大约有 120 个 csv 文件和 2 亿条记录。每一个都应该被理想地编入索引。要在 YARN 上运行作业,我运行了以下命令(根据我的 Hadoop 资源)

 spark-submit --class org.apache.spark.examples.SparkPi     --master yarn     --deploy-mode cluster     --driver-memory 4g     --executor-memory 2g --num-executors 5 --executor-cores 1 /PATH/myscript.py 

现在,已经过去了大约3天。我的工作正在运行。以下是 YARN 仪表板中显示的执行者状态 在此处输入图像描述

如图所示,对于每个执行者,所有的任务都完成了,只剩下一个。为什么会这样?也应该完成。最重要的是什么问题?解决问题的可能方法是什么?

标签: apache-sparkhadooppysparkhadoop-yarn

解决方案


推荐阅读