Using schemes in load and store paths
-------------------------------------

                 Key: PIG-757
                 URL: https://issues.apache.org/jira/browse/PIG-757
             Project: Pig
          Issue Type: Bug
            Reporter: Gunther Hagleitner


As part of the multiquery optimization work there's a need to use absolute 
paths for load and store operations (because the current directory changes 
during the execution of the script). In order to do so, the suggestion is to 
change the semantics of the location/filename string used in LoadFunc and 
Slicer/Slice.

The proposed change is:

   * Load locations without a scheme part are expected to be hdfs (mapreduce 
mode) or local (local mode) paths
   * Any hdfs or local path will be translated to a fully qualified absolute 
path before it is handed to either a LoadFunc or Slicer
   * Any scheme other than file or hdfs will result in the load path be passed 
through to the LoadFunc or Slicer without any modification.

Example:

If you have a LoadFunc that reads from a database, right now the following 
could be used:

{{{
a = load 'table' using DBLoader();
}}}

With the proposed changes table would be translated into an hdfs path though 
("hdfs://..../table"). Probably not what the loader wants to see. So in order 
to make this work one would use:

{{{
a = load 'sql://table' using DBLoader();
}}}

Now the DBLoader would see the unchanged string "sql://table". And pig will not 
use the string as an hdfs location.

This is an incompatible change but it's hopefully few existing Slicers/Loaders 
that are affected. This behavior is part of the multiquery work and can be 
turned off (reverted back) by using the "no_multiquery" flag.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to