static void Main(string[] args) { LoggerServiceFactory.SetLoggerService(Log4NetLoggerService.Instance); //this is optional - DefaultLoggerService will be used if not set Logger = LoggerServiceFactory.GetLogger(typeof(SparkCLRSamples)); Configuration = CommandlineArgumentProcessor.ProcessArugments(args); PrintLogLocation(); bool status = true; if (Configuration.IsDryrun) { status = SamplesRunner.RunSamples(); } else { SparkContext = CreateSparkContext(); SparkContext.SetCheckpointDir(Path.GetTempPath()); status = SamplesRunner.RunSamples(); PrintLogLocation(); ConsoleWriteLine("Completed running samples. Calling SparkContext.Stop() to tear down ..."); //following comment is necessary due to known issue in Spark. See https://issues.apache.org/jira/browse/SPARK-8333 ConsoleWriteLine("If this program (SparkCLRSamples.exe) does not terminate in 10 seconds, please manually terminate java process launched by this program!!!"); //TODO - add instructions to terminate java process SparkContext.Stop(); } if (Configuration.IsValidationEnabled && !status) { Environment.Exit(1); } }
internal static Configuration ProcessArugments(string[] args) { if (args.Length == 0) { PrintUsage(); Environment.Exit(0); } var configuration = new Configuration(); logger.LogInfo(string.Format("Arguments to SparkCLRSamples.exe are {0}", string.Join(",", args))); for (int i = 0; i < args.Length; i++) { if (args[i].Equals("--help", StringComparison.InvariantCultureIgnoreCase) || args[i].Equals("-h", StringComparison.InvariantCultureIgnoreCase) || args[i].Equals("-?", StringComparison.InvariantCultureIgnoreCase)) { PrintUsage(); Environment.Exit(0); } else if (args[i].Equals("spark.local.dir", StringComparison.InvariantCultureIgnoreCase) || args[i].Equals("--temp", StringComparison.InvariantCultureIgnoreCase)) { configuration.SparkLocalDirectoryOverride = args[i + 1]; } else if (args[i].Equals("sparkclr.sampledata.loc", StringComparison.InvariantCultureIgnoreCase) || args[i].Equals("--data", StringComparison.InvariantCultureIgnoreCase)) { configuration.SampleDataLocation = args[i + 1]; } else if (args[i].Equals("sparkclr.samples.torun", StringComparison.InvariantCultureIgnoreCase) || args[i].Equals("--torun", StringComparison.InvariantCultureIgnoreCase)) { configuration.SamplesToRun = args[i + 1]; } else if (args[i].Equals("sparkclr.samples.category", StringComparison.InvariantCultureIgnoreCase) || args[i].Equals("--cat", StringComparison.InvariantCultureIgnoreCase)) { configuration.SamplesCategory = args[i + 1]; } else if (args[i].Equals("sparkclr.enablevalidation", StringComparison.InvariantCultureIgnoreCase) || args[i].Equals("--validate", StringComparison.InvariantCultureIgnoreCase)) { configuration.IsValidationEnabled = true; } else if (args[i].Equals("sparkclr.samples.checkpointdir", StringComparison.InvariantCultureIgnoreCase) || args[i].Equals("--checkpointdir", StringComparison.InvariantCultureIgnoreCase)) { configuration.CheckpointDir = args[i + 1]; } else if (args[i].Equals("sparkclr.dryrun", StringComparison.InvariantCultureIgnoreCase) || args[i].Equals("--dryrun", StringComparison.InvariantCultureIgnoreCase)) { configuration.IsDryrun = true; } } return configuration; }