Skip to content
This repository was archived by the owner on Feb 3, 2021. It is now read-only.

Commit 2dd7891

Browse files
authored
Bug: add support for jars, pyfiles, files in Jobs (#408)
* add support for jars, pyfiles, files, refactor JobConfig * set encoding explicitly * fix typerror bug in mixed_mode()
1 parent 5761a36 commit 2dd7891

File tree

4 files changed

+39
-35
lines changed

4 files changed

+39
-35
lines changed

aztk/node_scripts/submit.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,9 @@ def __app_submit_cmd(
117117
os.environ['AZ_BATCH_TASK_WORKING_DIR'] + '/' + app + ' ' +
118118
' '.join(['\'' + str(app_arg) + '\'' for app_arg in (app_args or [])]))
119119

120+
with open("spark-submit.txt", mode="w", encoding="UTF-8") as stream:
121+
stream.write(spark_submit_cmd.to_str())
122+
120123
return spark_submit_cmd
121124

122125

aztk/spark/models/models.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -207,8 +207,8 @@ def __init__(
207207
custom_scripts=None,
208208
spark_configuration=None,
209209
docker_repo=None,
210-
max_dedicated_nodes=None,
211-
max_low_pri_nodes=None,
210+
max_dedicated_nodes=0,
211+
max_low_pri_nodes=0,
212212
subnet_id=None,
213213
worker_on_master=None):
214214
self.id = id

aztk_cli/config.py

Lines changed: 33 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -309,8 +309,8 @@ def __init__(self):
309309
self.spark_configuration = None
310310
self.vm_size = None
311311
self.docker_repo = None
312-
self.max_dedicated_nodes = None
313-
self.max_low_pri_nodes = None
312+
self.max_dedicated_nodes = 0
313+
self.max_low_pri_nodes = 0
314314
self.spark_defaults_conf = None
315315
self.spark_env_sh = None
316316
self.core_site_xml = None
@@ -327,13 +327,37 @@ def _merge_dict(self, config):
327327
if cluster_configuration:
328328
self.vm_size = cluster_configuration.get('vm_size')
329329
self.docker_repo = cluster_configuration.get('docker_repo')
330-
self.max_dedicated_nodes = cluster_configuration.get('size')
331-
self.max_low_pri_nodes = cluster_configuration.get('size_low_pri')
330+
if cluster_configuration.get('size') is not None:
331+
self.max_dedicated_nodes = cluster_configuration.get('size')
332+
if cluster_configuration.get('size_low_pri') is not None:
333+
print("max_low_pri nodes is None")
334+
self.max_low_pri_nodes = cluster_configuration.get('size_low_pri')
332335
self.custom_scripts = cluster_configuration.get('custom_scripts')
333336
self.subnet_id = cluster_configuration.get('subnet_id')
334337
self.worker_on_master = cluster_configuration.get("worker_on_master")
335338

336-
self.applications = config.get('applications')
339+
applications = config.get('applications')
340+
if applications:
341+
self.applications = []
342+
for application in applications:
343+
self.applications.append(
344+
aztk.spark.models.ApplicationConfiguration(
345+
name=application.get('name'),
346+
application=application.get('application'),
347+
application_args=application.get('application_args'),
348+
main_class=application.get('main_class'),
349+
jars=application.get('jars'),
350+
py_files=application.get('py_files'),
351+
files=application.get('files'),
352+
driver_java_options=application.get('driver_java_options'),
353+
driver_library_path=application.get('driver_library_path'),
354+
driver_class_path=application.get('driver_class_path'),
355+
driver_memory=application.get('driver_memory'),
356+
executor_memory=application.get('executor_memory'),
357+
driver_cores=application.get('driver_cores'),
358+
executor_cores=application.get('executor_cores')
359+
)
360+
)
337361

338362
spark_configuration = config.get('spark_configuration')
339363
if spark_configuration:
@@ -379,14 +403,12 @@ def merge(self, id, job_config_yaml=None):
379403
self.id = id
380404

381405
for entry in self.applications:
382-
if entry['name'] is None:
406+
if entry.name is None:
383407
raise aztk.error.AztkError(
384-
"Application specified with no name. Please verify your configuration in job.yaml"
385-
)
386-
if entry['application'] is None:
408+
"Application specified with no name. Please verify your configuration in job.yaml")
409+
if entry.application is None:
387410
raise aztk.error.AztkError(
388-
"No path to application specified for {} in job.yaml".
389-
format(entry['name']))
411+
"No path to application specified for {} in job.yaml".format(entry.name))
390412

391413

392414
def get_file_if_exists(file):

aztk_cli/spark/endpoints/job/submit.py

Lines changed: 1 addition & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -23,27 +23,6 @@ def execute(args: typing.NamedTuple):
2323

2424
job_conf.merge(args.job_id, args.job_conf)
2525

26-
aztk_applications = []
27-
for application in job_conf.applications:
28-
aztk_applications.append(
29-
aztk.spark.models.ApplicationConfiguration(
30-
name=application.get('name'),
31-
application=application.get('application'),
32-
application_args=application.get('application_args'),
33-
main_class=application.get('main_class'),
34-
jars=[],
35-
py_files=[],
36-
files=[],
37-
driver_java_options=application.get('driver_java_options'),
38-
driver_library_path=application.get('driver_library_path'),
39-
driver_class_path=application.get('driver_class_path'),
40-
driver_memory=application.get('driver_memory'),
41-
executor_memory=application.get('executor_memory'),
42-
driver_cores=application.get('driver_cores'),
43-
executor_cores=application.get('executor_cores')
44-
)
45-
)
46-
4726
# by default, load spark configuration files in .aztk/
4827
spark_configuration = config.load_aztk_spark_config()
4928
# overwrite with values in job_conf if they exist
@@ -56,7 +35,7 @@ def execute(args: typing.NamedTuple):
5635

5736
job_configuration = aztk.spark.models.JobConfiguration(
5837
id=job_conf.id,
59-
applications=aztk_applications,
38+
applications=job_conf.applications,
6039
custom_scripts=job_conf.custom_scripts,
6140
spark_configuration=spark_configuration,
6241
vm_size=job_conf.vm_size,

0 commit comments

Comments
 (0)