apache-spark - 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 仪表板中显示的执行者状态
如图所示,对于每个执行者,所有的任务都完成了,只剩下一个。为什么会这样?也应该完成。最重要的是什么问题?解决问题的可能方法是什么?
解决方案
推荐阅读
- oracle - 在 SQL LOADER 控制文件中使用 CASE 语句
- java - Prometheus 计数器不一致
- javascript - 响应式菜单按钮仅在 iOS 设备上不起作用
- reactjs - 在 React 16.8 中访问整个状态对象
- c# - Json反序列化忽略具有错误值的对象
- vba - 无法在 Word 2016 中使用自定义 UI 上下文菜单
- sharepoint - 在新功能区中更改 Sharepoint 图标
- php - 无法查看从父类继承的属性
- c++ - C++(函数)模板返回其唯一参数而不为某些类型复制它
- unity3d - 如何正确检测玩家何时可以从上方粉碎敌人?