-
Notifications
You must be signed in to change notification settings - Fork 390
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Getting error in EB LzoProtobufB64LinePigStorage storefunc. #377
Comments
com.twitter.elephantbird.pig.store.LzoProtobufB64LinePigStorage('com.test.sample.data.Sample$ Testing') have tried to access objects like this but same issue. |
Hi Raghu, I'm facing this issue during store the result with the above format in pig. |
Please help on this. |
This looks like protobuf version mismatch. What is the is the version your I think with Hadoop you might end up with ver 2.4.1 on the mappers and On Sunday, March 9, 2014, Viswanathan Jayamoorthy notifications@github.com
composed on mobile |
Hi Raghu, I'm using protobuf-2.4.1 version for generating the data. Now I'm using the hadoop2.x and it has protobuf version of 2.5.0 is that not backward compatible? Or do I need to copy the protobuf-2.4.1 jar in hadoop lib? |
Hi Raghu, |
Hi Raghu, It looks I'm unable to use this class com.twitter.elephantbird.pig.store.LzoProtobufB64LinePigStorage in pig store method. |
And 2.5.0 is almost certainly not backward compatible. That bump from 2.4 -> 2.5 signals incompatibility. |
yeah, I knew that he will respond always. Just posted the errors to let him know. |
I guarantee he's going to ask - "Why are you unable to use the class?" What error are you seeing? Can you provide a stack trace, or more detailed information to help diagnose? |
Yeah, these protobuf versions are not compatible. @viswaj can you compile your proto classes with 2.5? ElephantBird should work fine with either versions. [ Just in case you want to use LzoProtobufBlockPigStorage instead of LzoProtobufB64LinePigStorage, you do need latest changes in elephant-bird master, it was recently updated to work with protobuf 2.5] |
Hi Raghu, Thanks for the info. Have fixed the compatible issue and it works well. I able to read the data using com.twitter.elephantbird.pig.store.LzoProtobufB64LinePigStorage by parsing the proto msg class. The problem is I could not able to use this class(com.twitter.elephantbird.pig.store.LzoProtobufB64LinePigStorage) for storing the result data with pig store function. I need the data to be store as encoded with lzo format. |
You listed the same class for twice in your message. LzoProtobufB64LinePigStorage is only for storing. For reading, you would use LzoProtobufB64LinePigLoader (ends with Loader). If you don't have protobuf version mismatch, both loader and storage should work. As Sam suggested, please post your new error, and if you can, post your pig script as well. |
Hi Raghu, I'm using the loader class only for reading and it works fine. eg., store d into '/tmp/sampledata' using com.twitter.elephantbird.pig.store.LzoProtobufB64LinePigStorage('com.test.log.testing.Store$TestStore'); Hope I need to pass the complete proto class in storage arg. |
long shot but.... I think you need to escape the $ in your pig script as $ On Mon, Mar 10, 2014 at 10:19 AM, Viswanathan Jayamoorthy <
|
What is the error you see with the above store? |
Thanks guys. store d into '/tmp/sampledata' using com.twitter.elephantbird.pig.store.LzoProtobufB64LinePigStorage('com.test.log.testing.Store.TestStore'); It's resolved by changing as above and able to store the data in message proto. |
Hi Raghu,
Facing error in EB storefunc,
3779 at com.test.sample.data.Sample$Testing.getSerializedSize(Sample.java:19967)
3780 at com.google.protobuf.AbstractMessageLite.toByteArray(AbstractMessageLite.java:62)
3781 at com.twitter.elephantbird.mapreduce.io.ProtobufConverter.toBytes(ProtobufConverter.java:73)
3782 at com.twitter.elephantbird.mapreduce.io.ProtobufConverter.toBytes(ProtobufConverter.java:15)
3783 at com.twitter.elephantbird.mapreduce.output.LzoBinaryB64LineRecordWriter.write(LzoBinaryB64LineRecordWriter.java:42)
3784 at com.twitter.elephantbird.mapreduce.output.LzoBinaryB64LineRecordWriter.write(LzoBinaryB64LineRecordWriter.java:26)
3785 at com.twitter.elephantbird.pig.store.LzoProtobufB64LinePigStorage.putNext(LzoProtobufB64LinePigStorage.java:55)
3786 at org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.PigOutputFormat$PigRecordWriter.write(PigOutputFormat.java:139)
3787 at org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.PigOutputFormat$PigRecordWriter.write(PigOutputFormat.java:98)
3788 at org.apache.hadoop.mapred.ReduceTask$NewTrackingRecordWriter.write(ReduceTask.java:576)
3789 at org.apache.hadoop.mapreduce.task.TaskInputOutputContextImpl.write(TaskInputOutputContextImpl.java:89)
3790 at org.apache.hadoop.mapreduce.lib.reduce.WrappedReducer$Context.write(WrappedReducer.java:105)
I have proto with multiple message blocks. How to access them in latest EB in storefunc of LzoProtobuffB64LinePigStore? I'm refer as follows,
com.twitter.elephantbird.pig.store.LzoProtobufB64LinePigStorage('com.test.sample.data.Sample.Testing')
Earlier I used com.twitter.elephantbird.pig.proto.LzoProtobuffB64LinePigStore it works well(i.e., com.twitter.elephantbird.pig.proto.LzoProtobuffB64LinePigStore('Testing')), but in latest version this class not found, even I loaded the below jars,
elephant-bird-hadoop-compat-4.4.jar
elephant-bird-pig-4.4.jar
elephant-bird-core-4.4.jar
Pls help.
The text was updated successfully, but these errors were encountered: