Apache Spark 提交作业可以通过命令行或通过编程方式进行。以下分别是两种方式的基本步骤:
1. 命令行提交(Spark Submit)
在集群模式下,你通常会在安装了Spark和Hadoop环境的服务器上运行spark-submit
命令来提交作业。
./bin/spark-submit \
--class <你的主类名> \
--master <集群模式> \
--deploy-mode <部署模式(client 或 cluster)> \
--executor-memory <executor内存大小> \
--num-executors <executor数量> \
--conf <自定义配置项> \
<你的应用jar包路径> \
[应用参数]
例如:
./bin/spark-submit \
--class com.example.MainClass \
--master yarn \
--deploy-mode cluster \
--executor-memory 4g \
--num-executors 5 \
--conf spark.yarn.jar=hdfs:///path/to/your/jarfile.jar \
hdfs:///path/to/your/application.jar \
arg1 arg2 arg3
2. 编程方式提交(使用SparkContext或SparkSession)
如果你在本地开发或者希望在代码中直接创建SparkContext并提交任务,可以使用Java、Scala或Python API:
Scala示例:
import org.apache.spark.SparkConf
import org.apache.spark.sql.SparkSession
object Main {
def main(args: Array[String]) {
val conf = new SparkConf().setAppName("MyApp").setMaster("local[*]")
val spark = SparkSession.builder.config(conf).getOrCreate()
// 你的Spark作业代码
val df = spark.read.parquet("mydata.parquet")
df.show()
spark.stop() // 在程序结束时关闭SparkSession
}
}
然后,你可以编译这个 Scala 应用,并生成一个 JAR 包,之后通过 spark-submit
命令提交到集群。
Python示例:
from pyspark.sql import SparkSession
def main():
spark = SparkSession.builder.appName('MyApp').master('local[*]').getOrCreate()
# 你的Spark作业代码
df = spark.read.parquet('mydata.parquet')
df.show()
spark.stop() # 在程序结束时关闭SparkSession
if __name__ == "__main__":
main()
对于Python应用,可以直接运行脚本或者打包成zip文件后通过spark-submit
提交到集群。