[ 
https://issues.apache.org/jira/browse/PIG-3015?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13659573#comment-13659573
 ] 

Paul Mazak commented on PIG-3015:
---------------------------------

One simple workaround for us was to override AvroStorage's checkSchema this way.
{code}
/**
 * In Pig script do:
 * REGISTER 'lib/this.jar'
 * DEFINE AvroStorage com.this.JoinableAvroStorage;
 */
public class JoinableAvroStorage extends AvroStorage {
  
  @Override
  public void checkSchema(ResourceSchema s) throws IOException {
    try {
      super.checkSchema(s);
    }
    catch (SchemaParseException spe) {
      ResourceFieldSchema[] pigFields = s.getFields();
      for (int i = 0; i < pigFields.length; i++) {
        String outname = pigFields[i].getName();
        if (outname.contains("::")) {
          String newOutname = outname.split("::")[1];
          pigFields[i].setName(newOutname);
        }
      }
      super.checkSchema(s);
    }
  }
}
{code}
                
> Rewrite of AvroStorage
> ----------------------
>
>                 Key: PIG-3015
>                 URL: https://issues.apache.org/jira/browse/PIG-3015
>             Project: Pig
>          Issue Type: Improvement
>          Components: piggybank
>            Reporter: Joseph Adler
>            Assignee: Joseph Adler
>         Attachments: bad.avro, good.avro, PIG-3015-10.patch, 
> PIG-3015-11.patch, PIG-3015-2.patch, PIG-3015-3.patch, PIG-3015-4.patch, 
> PIG-3015-5.patch, PIG-3015-6.patch, PIG-3015-7.patch, PIG-3015-9.patch, 
> PIG-3015-doc-2.patch, PIG-3015-doc.patch, TestInput.java, Test.java, 
> with_dates.pig
>
>
> The current AvroStorage implementation has a lot of issues: it requires old 
> versions of Avro, it copies data much more than needed, and it's verbose and 
> complicated. (One pet peeve of mine is that old versions of Avro don't 
> support Snappy compression.)
> I rewrote AvroStorage from scratch to fix these issues. In early tests, the 
> new implementation is significantly faster, and the code is a lot simpler. 
> Rewriting AvroStorage also enabled me to implement support for Trevni (as 
> TrevniStorage).
> I'm opening this ticket to facilitate discussion while I figure out the best 
> way to contribute the changes back to Apache.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to