首页 > 解决方案 > 如何将命名参数发送到 spark-submit

问题描述

我正在尝试执行 pyspark,我需要在我的程序中使用一些命名参数。解决这个问题的任何想法

标签: apache-sparkpysparkapache-spark-sql

解决方案


使用argparse ArgParse AII 从 spark-submit 读取命名参数。下面的代码将与 spark-submit 一起使用。

spark-submit --master yarn --deploy-mode cluster --num-executors 2 --executor-memory 1G --executor-cores 2 --driver-memory 1G  spark_read_write.py --inputpath <input path> --outputpath <output path> --configpath <config path>
# Include standard modules
import argparse

from pyspark.sql import SQLContext,SparkSession
from pyspark import SparkContext,SparkConf
from pyspark.sql.functions import *
from pyspark.sql.types import *

spark = SparkSession.builder.appName("ReadWriteSpark").getOrCreate()
sparkcont = SparkContext.getOrCreate(SparkConf().setAppName("ReadWriteSpark"))
logs = sparkcont.setLogLevel("ERROR")

# Initiate the parser
parser = argparse.ArgumentParser()

# Add long and short argument
parser.add_argument("--inputpath", "-inputpath", help="configuration spark path")
parser.add_argument("--outputpath", "-outputpath", help="output spark path")
parser.add_argument("--configpath", "-outputpath", help="output spark path")

# Read arguments from the command line
args = parser.parse_args()

# Check for --cofigpath
if args.cofigpath:
    configpath=args.cofigpath
# Check for --inputpath
if args.inputpath:
    inputpath=args.inputpath
# Check for --outputpath
if args.outputpath:
    outputpath=args.outputpath

df = spark.read.format("json")
    .load(inputpath)

df.write.csv(outputpath)

推荐阅读