[
https://issues.apache.org/jira/browse/PIG-111?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12573650#action_12573650
]
Benjamin Francisoud commented on PIG-111:
-----------------------------------------
I counted 3 constructors where a new Properties() object is created by
PigServer...
I agree with you that constructor signature should state clearly that a
configuration (here a properties object) is mandatory and should be provided by
the client code using PigServer.
Do you think we should remove those 3 constructors to be consistent and have a
clearer /simpler api ?
{code:java}
public PigServer(String execType) throws ExecException, IOException {
this(parseExecType(execType), new Properties());
}
public PigServer() throws ExecException {
this(ExecType.MAPREDUCE, new Properties());
}
public PigServer(ExecType execType) throws ExecException, IOException {
this(execType, new Properties());
}{code}
That would leave those 2 constructors in PigServer:
{code:java}
public PigServer(ExecType execType, Properties properties) throws ExecException
{
PropertiesUtil.loadPropertiesFromFile(properties);
this.pigContext = new PigContext(execType, properties);
pigContext.connect();
}
public PigServer(PigContext context) throws ExecException {
this.pigContext = context;
pigContext.connect();
}{code}
> Configuration of Pig
> --------------------
>
> Key: PIG-111
> URL: https://issues.apache.org/jira/browse/PIG-111
> Project: Pig
> Issue Type: Improvement
> Reporter: Craig Macdonald
> Attachments: after.png, before.png, config.patch.1502,
> PIG-111-v04.patch, PIG-111-v05.patch, PIG-111_v_3_sg.patch, PIG-93-v01.patch,
> PIG-93-v02.patch
>
>
> This JIRA discusses issues relating to the configuration of Pig.
> Uses cases:
>
> 1. I want to configure Pig programatically from Java
> Motivation: pig can be embedded from another Java program, and configuration
> should be accessible to be set by the client code
> 2. I want to configure Pig from the command line
> 3. I want to configure Pig from the Pig shell (Grunt)
> 4. I want Pig to remember my configuration for every Pig session
> Motivation: to save me typing in some configuration stuff every time.
> 5. I want Pig to remember my configuration for this script.
> Motivation: I must use a common configuration for 50% of my Pig scripts -
> can I share this configuration between scripts.
> Current Status:
> * Pig uses System properties for some configuration
> * A configuration properties object in PigContext is not used.
> * pigrc can contain properties
> * Configuration properties can not be set from Grunt
> Proposed solutions to use cases:
> 1. Configuration should be set in PigContext, and accessible from client code.
> 2. System properties are copied to PigContext, or can be specified on the
> command line (duplication with System properties)
> 3. Allow configuration properties to be set using the "set" command in Grunt
> 4. Pigrc can contain properties. Is this enough, or can other configuration
> stuff be set, eg aliases, imports, etc.
> 5. Add an include directive to pig, to allow a shared configuration/Pig
> script to be included.
> Connections to Shell scripting:
> * The source command in Bash allows another bash script file to be included
> - this allows shared variables to be set in one file shared between a set of
> scripts.
> * Aliases can be set, according to user preferences, etc.
> * All this can be done in your .bashrc file
> Issues:
> * What happens when you change a property after the property has been read?
> * Can Grunt read a pigrc containing various statements etc before the
> PigServer is completely configured?
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.