You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pig.apache.org by da...@apache.org on 2010/05/26 19:17:55 UTC
svn commit: r948504 - in /hadoop/pig/trunk: src/org/apache/pig/Main.java
src/org/apache/pig/PigServer.java
src/org/apache/pig/impl/util/PropertiesUtil.java
test/org/apache/pig/test/TestPigServer.java
Author: daijy
Date: Wed May 26 17:17:55 2010
New Revision: 948504
URL: http://svn.apache.org/viewvc?rev=948504&view=rev
Log:
PIG-1381: Need a way for Pig to take an alternative property file (option 1)
Modified:
hadoop/pig/trunk/src/org/apache/pig/Main.java
hadoop/pig/trunk/src/org/apache/pig/PigServer.java
hadoop/pig/trunk/src/org/apache/pig/impl/util/PropertiesUtil.java
hadoop/pig/trunk/test/org/apache/pig/test/TestPigServer.java
Modified: hadoop/pig/trunk/src/org/apache/pig/Main.java
URL: http://svn.apache.org/viewvc/hadoop/pig/trunk/src/org/apache/pig/Main.java?rev=948504&r1=948503&r2=948504&view=diff
==============================================================================
--- hadoop/pig/trunk/src/org/apache/pig/Main.java (original)
+++ hadoop/pig/trunk/src/org/apache/pig/Main.java Wed May 26 17:17:55 2010
@@ -101,7 +101,7 @@ public static void main(String args[])
{
int rc = 1;
Properties properties = new Properties();
- PropertiesUtil.loadPropertiesFromFile(properties);
+ PropertiesUtil.loadDefaultProperties(properties);
boolean verbose = false;
boolean gruntCalled = false;
@@ -136,6 +136,7 @@ public static void main(String args[])
opts.registerOpt('x', "exectype", CmdLineParser.ValueExpected.REQUIRED);
opts.registerOpt('F', "stop_on_failure", CmdLineParser.ValueExpected.NOT_ACCEPTED);
opts.registerOpt('M', "no_multiquery", CmdLineParser.ValueExpected.NOT_ACCEPTED);
+ opts.registerOpt('P', "propertyFile", CmdLineParser.ValueExpected.REQUIRED);
ExecMode mode = ExecMode.UNKNOWN;
String file = null;
@@ -266,6 +267,10 @@ public static void main(String args[])
throw new RuntimeException("ERROR: Unrecognized exectype.", e);
}
break;
+ case 'P':
+ PropertiesUtil.loadPropertiesFromFile(properties,
+ opts.getValStr());
+ break;
default: {
Character cc = Character.valueOf(opt);
throw new AssertionError("Unhandled option " + cc.toString());
@@ -610,7 +615,7 @@ public static void usage()
System.out.println(" options include:");
System.out.println(" -4, -log4jconf log4j configuration file, overrides log conf");
System.out.println(" -b, -brief brief logging (no timestamps)");
- System.out.println(" -c, -cluster clustername, kryptonite is default");
+ System.out.println(" -c, -check syntax check");
System.out.println(" -d, -debug debug level, INFO is default");
System.out.println(" -e, -execute commands to execute (within quotes)");
System.out.println(" -f, -file path to the script to execute");
@@ -628,6 +633,7 @@ public static void usage()
System.out.println(" -F, -stop_on_failure aborts execution on the first failed job; off by default");
System.out.println(" -M, -no_multiquery turn multiquery optimization off; Multiquery is on by default");
+ System.out.println(" -P, -propertyFile path to property file");
}
private static String validateLogFile(String logFileName, String scriptName) {
Modified: hadoop/pig/trunk/src/org/apache/pig/PigServer.java
URL: http://svn.apache.org/viewvc/hadoop/pig/trunk/src/org/apache/pig/PigServer.java?rev=948504&r1=948503&r2=948504&view=diff
==============================================================================
--- hadoop/pig/trunk/src/org/apache/pig/PigServer.java (original)
+++ hadoop/pig/trunk/src/org/apache/pig/PigServer.java Wed May 26 17:17:55 2010
@@ -195,7 +195,7 @@ public class PigServer {
* @throws ExecException
*/
public PigServer(ExecType execType) throws ExecException {
- this(execType, PropertiesUtil.loadPropertiesFromFile());
+ this(execType, PropertiesUtil.loadDefaultProperties());
}
public PigServer(ExecType execType, Properties properties) throws ExecException {
Modified: hadoop/pig/trunk/src/org/apache/pig/impl/util/PropertiesUtil.java
URL: http://svn.apache.org/viewvc/hadoop/pig/trunk/src/org/apache/pig/impl/util/PropertiesUtil.java?rev=948504&r1=948503&r2=948504&view=diff
==============================================================================
--- hadoop/pig/trunk/src/org/apache/pig/impl/util/PropertiesUtil.java (original)
+++ hadoop/pig/trunk/src/org/apache/pig/impl/util/PropertiesUtil.java Wed May 26 17:17:55 2010
@@ -19,13 +19,10 @@
package org.apache.pig.impl.util;
import java.io.BufferedInputStream;
+import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
-import java.io.File ;
-import java.util.Enumeration;
-import java.util.Map;
import java.util.Properties;
-import java.util.Set;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -35,66 +32,17 @@ public class PropertiesUtil {
private static final String PROPERTIES_FILE = "/pig.properties";
private final static Log log = LogFactory.getLog(PropertiesUtil.class);
- public static void loadPropertiesFromFile(Properties properties) {
- InputStream inputStream = null;
- BufferedInputStream bis = null;
- Class<PropertiesUtil> clazz = PropertiesUtil.class;
- try {
- inputStream = clazz
- .getResourceAsStream(DEFAULT_PROPERTIES_FILE);
- if (inputStream == null) {
- String msg = "no pig-default.properties configuration file available in the classpath";
- log.debug(msg);
- } else {
- properties.load(inputStream);
- }
- } catch (Exception e) {
- log.error("unable to parse pig-default.properties :", e);
- } finally {
- if (inputStream != null) try {inputStream.close();} catch (Exception e) {}
- }
-
- try {
- inputStream = null;
- inputStream = clazz
- .getResourceAsStream(PROPERTIES_FILE);
- if (inputStream == null) {
- String msg = "no pig.properties configuration file available in the classpath";
- log.debug(msg);
- } else {
- properties.load(inputStream);
- }
- } catch (Exception e) {
- log.error("unable to parse pig.properties :", e);
- } finally {
- if (inputStream != null) try {inputStream.close();} catch (Exception e) {}
- }
-
- Properties pigrcProps = new Properties() ;
- try {
- File pigrcFile = new File(System.getProperty("user.home") + "/.pigrc");
- if (pigrcFile.exists()) {
- log.warn(pigrcFile.getAbsolutePath()
- + " exists but will be deprecated soon. Use conf/pig.properties instead!");
-
- bis = new BufferedInputStream(new FileInputStream(pigrcFile));
- pigrcProps.load(bis) ;
- }
- } catch (Exception e) {
- log.error("unable to parse .pigrc :", e);
- } finally {
- if (bis != null) try {bis.close();} catch (Exception e) {}
- }
-
- // Now put all the entries from pigrcProps into properties, but
- // only if they are not already set. pig.properties takes
- // precedence over .pigrc
- Set<Map.Entry<Object, Object>> entries = pigrcProps.entrySet();
- for (Map.Entry<Object, Object> entry : entries) {
- if (!properties.containsKey(entry.getKey())) {
- properties.put(entry.getKey(), entry.getValue());
- }
- }
+ /**
+ * Loads the default properties from pig-default.properties and
+ * pig.properties.
+ * @param properties Properties object that needs to be loaded with the
+ * properties' values.
+ */
+ public static void loadDefaultProperties(Properties properties) {
+ loadPropertiesFromFile(properties,
+ System.getProperty("user.home") + "/.pigrc");
+ loadPropertiesFromClasspath(properties, DEFAULT_PROPERTIES_FILE);
+ loadPropertiesFromClasspath(properties, PROPERTIES_FILE);
//Now set these as system properties only if they are not already defined.
if (log.isDebugEnabled()) {
@@ -117,9 +65,71 @@ public class PropertiesUtil {
ConfigurationValidator.validatePigProperties(properties) ;
}
- public static Properties loadPropertiesFromFile() {
+ /**
+ * Loads the properties from a given file.
+ * @param properties Properties object that is to be loaded.
+ * @param fileName file name of the file that contains the properties.
+ */
+ public static void loadPropertiesFromFile(Properties properties,
+ String fileName) {
+ BufferedInputStream bis = null;
+ Properties pigrcProps = new Properties() ;
+ try {
+ File pigrcFile = new File(fileName);
+ if (pigrcFile.exists()) {
+ if (fileName.endsWith("/.pigrc")) {
+ log.warn(pigrcFile.getAbsolutePath()
+ + " exists but will be deprecated soon." +
+ " Use conf/pig.properties instead!");
+ }
+
+ bis = new BufferedInputStream(new FileInputStream(pigrcFile));
+ pigrcProps.load(bis) ;
+ }
+ } catch (Exception e) {
+ log.error("unable to parse .pigrc :", e);
+ } finally {
+ if (bis != null) try {bis.close();} catch (Exception e) {}
+ }
+
+ properties.putAll(pigrcProps);
+ }
+
+ /**
+ * Finds the file with the given file name in the classpath and loads the
+ * properties provided in it.
+ * @param properties the properties object that needs to be loaded with the
+ * property values provided in the file.
+ * @param fileName file name of the properties' file.
+ */
+ private static void loadPropertiesFromClasspath(Properties properties,
+ String fileName) {
+ InputStream inputStream = null;
+ Class<PropertiesUtil> clazz = PropertiesUtil.class;
+ try {
+ inputStream = clazz
+ .getResourceAsStream(fileName);
+ if (inputStream == null) {
+ String msg = "no " + fileName +
+ " configuration file available in the classpath";
+ log.debug(msg);
+ } else {
+ properties.load(inputStream);
+ }
+ } catch (Exception e) {
+ log.error("unable to parse " + fileName + " :", e);
+ } finally {
+ if (inputStream != null) try {inputStream.close();} catch (Exception e) {}
+ }
+ }
+
+ /**
+ * Loads default properties.
+ * @return
+ */
+ public static Properties loadDefaultProperties() {
Properties properties = new Properties();
- loadPropertiesFromFile(properties);
+ loadDefaultProperties(properties);
return properties;
}
Modified: hadoop/pig/trunk/test/org/apache/pig/test/TestPigServer.java
URL: http://svn.apache.org/viewvc/hadoop/pig/trunk/test/org/apache/pig/test/TestPigServer.java?rev=948504&r1=948503&r2=948504&view=diff
==============================================================================
--- hadoop/pig/trunk/test/org/apache/pig/test/TestPigServer.java (original)
+++ hadoop/pig/trunk/test/org/apache/pig/test/TestPigServer.java Wed May 26 17:17:55 2010
@@ -626,25 +626,36 @@ public class TestPigServer extends TestC
public void testPigProperties() throws Throwable {
File defaultPropertyFile = new File("pig-default.properties");
File propertyFile = new File("pig.properties");
+ File cliPropertyFile = new File("commandLine_pig.properties");
- Properties properties = PropertiesUtil.loadPropertiesFromFile();
+ Properties properties = PropertiesUtil.loadDefaultProperties();
assertTrue(properties.getProperty("test123")==null);
PrintWriter out = new PrintWriter(new FileWriter(defaultPropertyFile));
out.println("test123=defaultproperties");
out.close();
- properties = PropertiesUtil.loadPropertiesFromFile();
+ properties = PropertiesUtil.loadDefaultProperties();
assertTrue(properties.getProperty("test123").equals("defaultproperties"));
out = new PrintWriter(new FileWriter(propertyFile));
out.println("test123=properties");
out.close();
- properties = PropertiesUtil.loadPropertiesFromFile();
+ properties = PropertiesUtil.loadDefaultProperties();
assertTrue(properties.getProperty("test123").equals("properties"));
+ out = new PrintWriter(new FileWriter(cliPropertyFile));
+ out.println("test123=cli_properties");
+ out.close();
+
+ properties = PropertiesUtil.loadDefaultProperties();
+ PropertiesUtil.loadPropertiesFromFile(properties,
+ "commandLine_pig.properties");
+ assertTrue(properties.getProperty("test123").equals("cli_properties"));
+
defaultPropertyFile.delete();
propertyFile.delete();
+ cliPropertyFile.delete();
}
}