// snippet - source description :[ Create Spark Cluster . kt Ġdemonstrates Ġhow Ġto Ġcreate Ġand Ġstart Ġrunning Ġa Ġnew Ġcluster Ġ( job Ġflow ). ] č Ċ // snippet - keyword :[ AWS ĠSDK Ġfor ĠKotlin ] č Ċ // snippet - keyword :[ Code ĠSample ] č Ċ // snippet - keyword :[ Amazon ĠE MR ] č Ċ // snippet - s ourc etype :[ full - example ] č Ċ // snippet - s ourced ate :[ 1 1 / 0 4 / 2 0 2 1 ] č Ċ // snippet - source author :[ sc mac don ĠAWS ] č Ċ /* čĊĠĠ ĠCopyright ĠAmazon . com , ĠInc . Ġor Ġits Ġaffiliates . ĠAll ĠRights ĠReserved . čĊĠĠ ĠSPDX - License - Identifier : ĠApache - 2 . 0 č Ċ */ čĊč Ċ package Ġcom . kotlin . em r čĊč Ċ // snippet - start :[ erm . kotlin . create _ spark . import ] č Ċ import Ġaws . sdk . kotlin . services . em r . E mr Client č Ċ import Ġaws . sdk . kotlin . services . em r . model . H adoop Jar Step Config č Ċ import Ġaws . sdk . kotlin . services . em r . model . Application č Ċ import Ġaws . sdk . kotlin . services . em r . model . Step Config č Ċ import Ġaws . sdk . kotlin . services . em r . model . Action On Failure č Ċ import Ġaws . sdk . kotlin . services . em r . model . Job Flow Instances Config č Ċ import Ġaws . sdk . kotlin . services . em r . model . Run Job Flow Request č Ċ import Ġaws . sdk . kotlin . services . em r . model . E mr Exception č Ċ import Ġkotlin . system . exit Process č Ċ // snippet - end :[ erm . kotlin . create _ spark . import ] čĊč Ċ /** č Ċ To Ġrun Ġthis ĠKotlin Ġcode Ġexample , Ġensure Ġthat Ġyou Ġhave Ġsetup Ġyour Ġdevelopment Ġenvironment , č Ċ including Ġyour Ġcredentials . čĊč Ċ For Ġinformation , Ġsee Ġthis Ġdocumentation Ġtopic : č Ċ https :// docs . aws . amazon . com / sdk - for - kotlin / latest / developer - guide / setup . html čĊ Ġ*/ čĊč Ċ suspend Ġfun Ġmain ( args : Array < String >) Ġ{ čĊčĊĠĠĠ Ġval Ġusage Ġ= Ġ""" čĊĠĠĠĠĠĠĠ ĠUsage : čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ< jar > Ġ< my Class > Ġ< keys > Ġ< log Uri > Ġ< name > čĊčĊĠĠĠĠĠĠĠ ĠWhere : čĊĠĠĠĠĠĠĠĠĠĠĠ Ġjar Ġ- Ġa Ġpath Ġto Ġa ĠJ AR Ġfile Ġrun Ġduring Ġthe Ġstep . ĠčĊĠĠĠĠĠĠĠĠĠĠĠ Ġmy Class Ġ- Ġthe Ġname Ġof Ġthe Ġmain Ġclass Ġin Ġthe Ġspecified ĠJava Ġfile . ĠčĊĠĠĠĠĠĠĠĠĠĠĠ Ġkeys Ġ- ĠThe Ġname Ġof Ġthe ĠEC 2 Ġkey Ġpair . ĠčĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog Uri Ġ- ĠThe ĠAmazon ĠS 3 Ġbucket Ġwhere Ġthe Ġlogs Ġare Ġlocated Ġ( for Ġexample , Ġ Ġs 3 :// < Bucket Name >/ logs /). ĠčĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ- ĠThe Ġname Ġof Ġthe Ġjob Ġflow . Ġ čĊčĊĠĠĠĠĠĠĠ Ġ""" čĊčĊĠĠĠĠ Ġif Ġ( args . size Ġ!= Ġ 5 ) Ġ{ čĊĠĠĠĠĠĠĠĠĠ Ġprintln ( usage ) čĊĠĠĠĠĠĠĠĠĠ Ġexit Process ( 0 ) čĊĠĠĠĠĠ Ġ} čĊčĊĠĠĠ Ġval Ġjar Ġ= Ġargs [ 0 ] čĊĠĠĠ Ġval Ġmy Class Ġ= Ġargs [ 1 ] čĊĠĠĠ Ġval Ġkeys Ġ= Ġargs [ 2 ] čĊĠĠĠ Ġval Ġlog Uri Ġ= Ġargs [ 3 ] čĊĠĠĠ Ġval Ġname Ġ= Ġargs [ 4 ] čĊĠĠĠ Ġval Ġem r Client Ġ= ĠE mr Client { region Ġ= Ġ" us - west - 2 " Ġ} čĊĠĠĠ Ġval Ġjob Flow Id : ĠString Ġ= Ġcreate Spark Cluster ( em r Client , Ġjar , Ġmy Class , Ġkeys , Ġlog Uri , Ġname ). toString () čĊĠĠĠ Ġprintln (" The Ġjob Ġflow Ġid Ġis Ġ$ job Flow Id ") č Ċ } čĊč Ċ // snippet - start :[ erm . kotlin . create _ spark . main ] č Ċ suspend Ġfun Ġcreate Spark Cluster ( čĊĠĠĠ Ġem r Client : ĠE mr Client , čĊĠĠĠ Ġjar Val : ĠString ?, čĊĠĠĠ Ġmy Class : ĠString ?, čĊĠĠĠ Ġkeys Val : ĠString ?, čĊĠĠĠ Ġlog Uri Val : ĠString ?, čĊĠĠĠ Ġname Val : ĠString ? č Ċ ): ĠString ? Ġ{ čĊčĊĠĠĠ Ġtry Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġjar Step Config Ġ= ĠHadoop Jar Step Config Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġjar Ġ= Ġjar Val čĊĠĠĠĠĠĠĠĠĠĠĠ Ġmain Class Ġ= Ġmy Class čĊĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠ Ġval Ġapp Ġ= ĠApplication Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" Spark " čĊĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠ Ġval Ġenable debugging Ġ= ĠStep Config Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" Enable Ġdebugging " čĊĠĠĠĠĠĠĠĠĠĠĠ Ġaction On Failure Ġ= ĠAction On Failure . from Value (" TERMIN ATE _ JOB _ FLOW ") čĊĠĠĠĠĠĠĠĠĠĠĠ Ġhadoop Jar Step Ġ= Ġjar Step Config čĊĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠ Ġval Ġinstances Config Ġ= ĠJob Flow Instances Config Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġec 2 Subnet Id Ġ= Ġ" subnet - 2 0 6 a 9 c 5 8 " čĊĠĠĠĠĠĠĠĠĠĠĠ Ġec 2 KeyName Ġ= Ġkeys Val čĊĠĠĠĠĠĠĠĠĠĠĠ Ġinstance Count Ġ= Ġ 3 čĊĠĠĠĠĠĠĠĠĠĠĠ Ġkeep Job Flow Alive When No Steps Ġ= Ġtrue čĊĠĠĠĠĠĠĠĠĠĠĠ Ġmaster Instance Type Ġ= Ġ" m 4 . large " čĊĠĠĠĠĠĠĠĠĠĠĠ Ġslave Instance Type Ġ= Ġ" m 4 . large " čĊĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠ Ġval Ġjob Flow Request Ġ= ĠRun Job Flow Request Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġname Val čĊĠĠĠĠĠĠĠĠĠĠĠ Ġrelease Label Ġ= Ġ" em r - 5 . 2 0 . 0 " čĊĠĠĠĠĠĠĠĠĠĠĠ Ġsteps Ġ= ĠlistOf ( enable debugging ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġapplications Ġ= ĠlistOf ( app ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog Uri Ġ= Ġlog Uri Val čĊĠĠĠĠĠĠĠĠĠĠĠ Ġservice Role Ġ= Ġ" EMR _ Default Role " čĊĠĠĠĠĠĠĠĠĠĠĠ Ġjob Flow Role Ġ= Ġ" EMR _ EC 2 _ Default Role " čĊĠĠĠĠĠĠĠĠĠĠĠ Ġinstances Ġ= Ġinstances Config čĊĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġem r Client . run Job Flow ( job Flow Request ) čĊĠĠĠĠĠĠĠ Ġreturn Ġresponse . job Flow Id čĊčĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠE mr Exception ) Ġ{ čĊĠĠĠĠĠĠĠ Ġprintln ( e . message ) čĊĠĠĠĠĠĠĠ Ġexit Process ( 0 ) čĊĠĠĠ Ġ} č Ċ } č Ċ // snippet - end :[ erm . kotlin . create _ spark . main ]