source: other-projects/hathitrust/solr-extracted-features/trunk/src/main/java/org/hathitrust/PrepareForIngest.java@ 30951

Last change on this file since 30951 was 30951, checked in by davidb, 8 years ago

Save a JSONObject as a file in the output directory

  • Property svn:executable set to *
File size: 4.1 KB
Line 
1package org.hathitrust;
2
3import java.io.Serializable;
4import org.apache.commons.cli.*;
5
6import org.apache.spark.api.java.*;
7import org.apache.spark.SparkConf;
8
9public class PrepareForIngest implements Serializable
10{
11 private static final long serialVersionUID = 1L;
12
13 public static final int NUM_PARTITIONS = 6; // default would appear to be 2
14
15 protected String _input_dir;
16 protected String _json_list_filename;
17 protected String _output_dir;
18
19 protected int _verbosity;
20
21 public PrepareForIngest(String input_dir, String json_list_filename, String output_dir, int verbosity)
22 {
23 _input_dir = input_dir;
24 _json_list_filename = (json_list_filename != null) ? json_list_filename : input_dir;
25 _output_dir = output_dir;
26 _verbosity = verbosity;
27 }
28
29 public void exec()
30 {
31 String spark_app_name = "HathiTrust Extract Features: Prepare for Solr Ingest";
32 spark_app_name += " [" + _json_list_filename + "]";
33
34 SparkConf conf = new SparkConf().setAppName(spark_app_name);
35 JavaSparkContext jsc = new JavaSparkContext(conf);
36
37 if (_verbosity >= 2) {
38 System.out.println("Default Minimum Partions: " + jsc.defaultMinPartitions());
39 System.out.println("Default Parallelism: " + jsc.defaultParallelism());
40 }
41
42 JavaRDD<String> json_list_data = jsc.textFile(_json_list_filename,NUM_PARTITIONS).cache();
43
44 PagedJSON paged_json = new PagedJSON(_input_dir,_output_dir,_verbosity);
45 JavaRDD<String> json_ids = json_list_data.flatMap(paged_json).cache();
46
47 long num_ids = json_ids.count();
48 System.out.println("");
49 System.out.println("############");
50 System.out.println("# Number of page ids: " + num_ids);
51 System.out.println("############");
52 System.out.println("");
53
54 System.out.println("############");
55 String rdd_save_file = "rdd-solr-json-page-files";
56 json_ids.saveAsTextFile(rdd_save_file);
57 System.out.println("# Saved RDD of Solr JSON page files, top-level, as:");
58 System.out.println("# " + rdd_save_file);
59 System.out.println("############");
60 System.out.println("");
61
62 jsc.close();
63 }
64
65 public static void main(String[] args) {
66
67
68 Options options = new Options();
69
70 //.withType(Integer.class)
71/*
72 options.addOption(OptionBuilder.withLongOpt("verbosity")
73 .withDescription("Set to control the level of debugging output [0=none, 1=some, 2=lots]")
74 .hasArg()
75 .withArgName("v")
76 .isRequired(false)
77 .create());
78*/
79 //Option num_cores_opt = new Option("n", "num-cores", true, "Number of cores to use");
80 //num_cores_opt.setRequired(false);
81 //options.addOption(num_cores_opt);
82
83 Option verbosity_opt = new Option("v", "verbosity", true,
84 "Set to control the level of debugging output [0=none, 1=some, 2=lots]");
85 verbosity_opt.setRequired(false);
86 options.addOption(verbosity_opt);
87
88 //CommandLineParser parser = new DefaultParser(); // 1.3 and above
89
90 // need to work with CLI v1.2 as this is the JAR that is bundled with Hadoop/Spark
91 CommandLineParser parser = new GnuParser();
92 HelpFormatter formatter = new HelpFormatter();
93 CommandLine cmd;
94
95 try {
96 cmd = parser.parse(options, args);
97 }
98 catch (ParseException e) {
99 System.err.println(e.getMessage());
100 formatter.printHelp("RUN.bash [options] json-file-list.txt input-dir output-dir", options);
101 System.exit(1);
102 return;
103 }
104
105 //value = ((Integer)cmdLine.getParsedOptionValue("num-cores")).intValue();
106 //value = ((Integer)cmdLine.getOptionValue("num-cores","2")).intValue();
107
108 //cmd.hasOption("json-filelist")
109
110 String verbosity_str = cmd.getOptionValue("verbosity","0");
111 int verbosity = Integer.parseInt(verbosity_str);
112
113 String[] filtered_args = cmd.getArgs();
114
115 if (filtered_args.length != 3) {
116 formatter.printHelp("RUN.bash [options] json-filelist.txt input-dir output-dir", options);
117 System.exit(1);
118 }
119 String json_list_filename = filtered_args[0];
120 String input_dir = filtered_args[1];
121 String output_dir = filtered_args[2];
122
123 PrepareForIngest prep_for_ingest = new PrepareForIngest(input_dir,json_list_filename,output_dir,verbosity);
124 prep_for_ingest.exec();
125
126 }
127}
Note: See TracBrowser for help on using the repository browser.