问题描述
我已经使用 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 仪表板中显示的执行程序状态
如图所示,对于每个执行者,所有任务都完成了,只剩下一个。为什么会这样?也应该完成。上面的问题是什么?解决问题的可能方法是什么?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)