我正在编写一个scala项目,我希望将类可以作为jar类从spark-submit执行。 (例如spark-submit --num-executors 6 --class org.project
我的问题如下:
我想使用用户在执行spark提交时设置的spark-context-configuration,并可选择覆盖一些参数,例如Application name。示例:--inputFile
将在spark上下文中传递6个exectors配置字段。
我希望能够将--verbose
或spark-submit --num-executors 6 --class org.project --inputFile ./data/mystery.txt
等选项参数传递给我的项目,而不会干扰火花参数(可能避免名称重叠)
示例:"--inputFile ./data/mystery.txt"
应将org.project
传递给类main
val conf = new SparkConf().setAppName("project");
val sc = new SparkContext(conf);
方法的args输入。
我在这些问题上取得的进展如下:
我跑main
在我的project
方法中,
但我不确定这是否符合预期。
Sparks将这些可选参数视为spark-submit的参数并输出错误。
Note.1:我的java类CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;
目前不继承任何其他类。
注2:我是火花世界的新手,我从基本搜索中找不到相关内容。
答案 0 :(得分:0)
您必须自己处理参数解析。我们在这里使用Scopt
。
当您提交作业时,它必须通过对象def main(args: Array[String])
输入。使用你最喜欢的参数解析器获取这些args并解析它们,相应地设置sparkConf和SparkSession并启动你的进程。
Spark有这样一个整体想法的例子: https://github.com/apache/spark/blob/master/examples/src/main/scala/org/apache/spark/examples/mllib/DenseKMeans.scala