Author: sms Date: Tue Mar 10 23:15:58 2009 New Revision: 752301 URL: http://svn.apache.org/viewvc?rev=752301&view=rev Log: PIG-650: pig should look for and use the pig specific 'pig-cluster-hadoop-site.xml' in the non HOD case just like it does in the HOD case
Modified: hadoop/pig/trunk/CHANGES.txt hadoop/pig/trunk/src/org/apache/pig/backend/hadoop/executionengine/HExecutionEngine.java Modified: hadoop/pig/trunk/CHANGES.txt URL: http://svn.apache.org/viewvc/hadoop/pig/trunk/CHANGES.txt?rev=752301&r1=752300&r2=752301&view=diff ============================================================================== --- hadoop/pig/trunk/CHANGES.txt (original) +++ hadoop/pig/trunk/CHANGES.txt Tue Mar 10 23:15:58 2009 @@ -457,3 +457,7 @@ PIG-705: Pig should display a better error message when backend error messages cannot be parsed (sms) + + PIG-650: pig should look for and use the pig specific + 'pig-cluster-hadoop-site.xml' in the non HOD case just like it does in the + HOD case (sms) Modified: hadoop/pig/trunk/src/org/apache/pig/backend/hadoop/executionengine/HExecutionEngine.java URL: http://svn.apache.org/viewvc/hadoop/pig/trunk/src/org/apache/pig/backend/hadoop/executionengine/HExecutionEngine.java?rev=752301&r1=752300&r2=752301&view=diff ============================================================================== --- hadoop/pig/trunk/src/org/apache/pig/backend/hadoop/executionengine/HExecutionEngine.java (original) +++ hadoop/pig/trunk/src/org/apache/pig/backend/hadoop/executionengine/HExecutionEngine.java Tue Mar 10 23:15:58 2009 @@ -161,6 +161,15 @@ // 2. hadoop-site.xml: Site-specific configuration for a given hadoop installation. // Now add the settings from "properties" object to override any existing properties // All of the above is accomplished in the method call below + + JobConf jobConf = new JobConf(); + jobConf.addResource("pig-cluster-hadoop-site.xml"); + + //the method below alters the properties object by overriding the + //hadoop properties with the values from properties and recomputing + //the properties + recomputeProperties(jobConf, properties); + configuration = ConfigurationUtil.toConfiguration(properties); properties = ConfigurationUtil.toProperties(configuration); cluster = properties.getProperty(JOB_TRACKER_LOCATION); @@ -382,36 +391,11 @@ JobConf jobConf = new JobConf(hadoopConf); jobConf.addResource("pig-cluster-hadoop-site.xml"); - // We need to load the properties from the hadoop configuration - // file we just found in the hod dir. We want to override - // these with any existing properties we have. - if (jobConf != null) { - Properties hodProperties = new Properties(); - Iterator<Map.Entry<String, String>> iter = jobConf.iterator(); - while (iter.hasNext()) { - Map.Entry<String, String> entry = iter.next(); - hodProperties.put(entry.getKey(), entry.getValue()); - } - - //override hod properties with user defined properties - Enumeration<Object> propertiesIter = properties.keys(); - while (propertiesIter.hasMoreElements()) { - String key = (String) propertiesIter.nextElement(); - String val = properties.getProperty(key); - hodProperties.put(key, val); - } - - //clear user defined properties and re-populate - properties.clear(); - Enumeration<Object> hodPropertiesIter = hodProperties.keys(); - while (hodPropertiesIter.hasMoreElements()) { - String key = (String) hodPropertiesIter.nextElement(); - String val = hodProperties.getProperty(key); - properties.put(key, val); - } - - } - + //the method below alters the properties object by overriding the + //hod properties with the values from properties and recomputing + //the properties + recomputeProperties(jobConf, properties); + hdfs = properties.getProperty(FILE_SYSTEM_LOCATION); if (hdfs == null) { int errCode = 4007; @@ -749,6 +733,44 @@ return Integer.getInteger("hod.nodes", 15); } } + + /** + * Method to recompute pig properties by overriding hadoop properties + * with pig properties + * @param conf JobConf with appropriate hadoop resource files + * @param properties Pig properties that will override hadoop properties; properties might be modified + */ + private void recomputeProperties(JobConf jobConf, Properties properties) { + // We need to load the properties from the hadoop configuration + // We want to override these with any existing properties we have. + if (jobConf != null && properties != null) { + Properties hadoopProperties = new Properties(); + Iterator<Map.Entry<String, String>> iter = jobConf.iterator(); + while (iter.hasNext()) { + Map.Entry<String, String> entry = iter.next(); + hadoopProperties.put(entry.getKey(), entry.getValue()); + } + + //override hadoop properties with user defined properties + Enumeration<Object> propertiesIter = properties.keys(); + while (propertiesIter.hasMoreElements()) { + String key = (String) propertiesIter.nextElement(); + String val = properties.getProperty(key); + hadoopProperties.put(key, val); + } + + //clear user defined properties and re-populate + properties.clear(); + Enumeration<Object> hodPropertiesIter = hadoopProperties.keys(); + while (hodPropertiesIter.hasMoreElements()) { + String key = (String) hodPropertiesIter.nextElement(); + String val = hadoopProperties.getProperty(key); + properties.put(key, val); + } + + } + } + }