2017-06-14 2 views
0

Je Compile Apache Pig 0.16 à partir du code source sur Hbase 1.2.5 comme suit:Compile Pig 0.16 sur Hbase 1.2.5, mais HbaseStorge ne fonctionne

ant jar -Dhadoopversion=23 -Dhbase95.version=1.2.5 

maintenant je veux exécuter du code de porc comme suit:

A = LOAD 'test.csv' USING PigStorage('\t') as (id:chararray,note:chararray); 

STORE A into 'hbase://test_me' using org.apache.pig.backend.hadoop.hbase.HBaseStorage('id:id note:note'); 

mais quand je veux courir code ci-dessus, je reçois cette erreur:

pig script failed to validate: java.lang.RuntimeException: could not instantiate 'org.apache.pig.backend.hadoop.hbase.HBaseStorage' with arguments '[id:id note:note]' 
at org.apache.pig.parser.QueryParserDriver.parse(QueryParserDriver.java:199) 
at org.apache.pig.PigServer$Graph.parseQuery(PigServer.java:1819) 
at org.apache.pig.PigServer$Graph.access$000(PigServer.java:1527) 
at org.apache.pig.PigServer.parseAndBuild(PigServer.java:460) 
at org.apache.pig.PigServer.executeBatch(PigServer.java:485) 
at org.apache.pig.PigServer.executeBatch(PigServer.java:471) 
at org.apache.pig.tools.grunt.GruntParser.executeBatch(GruntParser.java:172) 
at org.apache.pig.tools.grunt.GruntParser.parseStopOnError(GruntParser.java:235) 
at org.apache.pig.tools.grunt.GruntParser.parseStopOnError(GruntParser.java:206) 
at org.apache.pig.tools.grunt.Grunt.exec(Grunt.java:81) 
at org.apache.pig.Main.run(Main.java:630) 
at org.apache.pig.Main.main(Main.java:176) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:498) 
at org.apache.hadoop.util.RunJar.main(RunJar.java:212) 

Répondre

0

Hbase a besoin d'une colonne KEY et vous n'ont pas inclus! Dans votre cas, si ID est la colonne clé, vous devez utiliser le code suivant:

A = LOAD 'test.csv' USING PigStorage('\t') as (id:chararray,note:chararray); 
B = FILTER A BY SIZE(id) > 0; 
STORE B into 'hbase://test_me' using org.apache.pig.backend.hadoop.hbase.HBaseStorage('note:note'); 

Note: Pig choisira automatiquement la colonne ID comme clé.

, j'espère également votre table HBase a de la famille 'note'