2013-02-28 113 views
0

我有2個文本文件。我打算使用pig latin將數據轉儲到mysql表中。使用豬將數據插入到mysql表中

有沒有辦法呢?

我寫了下面的一段代碼:

register '/homes/rdheeraj/pig-0.10.0/code/mysql-connector-java-5.1.17-bin.jar' 
register '/homes/rdheeraj/pig-0.10.0/code/piggybank.jar'; 
a = load 'one.txt' using PigStorage('|') as (name:chararray, age:int); 
b = load 'two.txt' using PigStorage('|') as (name:chararray, desg:chararray); 
c = cogroup a by name, b by name; 
d = foreach c generate flatten(a), flatten(b); 
e = foreach d generate $0,$1,$3; 
store e into 'TEST' using org.apache.pig.piggybank.storage.DBStorage('com.mysql.jdbc.Driver','jdbc:mysql://127.0.0.1/sftool','root','password','insert into TEST (name,age,desg) values (?,?,?)'); 

我得到的錯誤如下

org.apache.pig.impl.logicalLayer.FrontendException: ERROR 1000: Error during parsing. Could not resolve org.apache.pig.piggybank.storage.DBStorage using imports: [, org.apache.pig.builtin., org.apache.pig.impl.builtin.] 
     at org.apache.pig.PigServer$Graph.parseQuery(PigServer.java:1597) 
     at org.apache.pig.PigServer$Graph.registerQuery(PigServer.java:1540) 
     at org.apache.pig.PigServer.registerQuery(PigServer.java:540) 
     at org.apache.pig.tools.grunt.GruntParser.processPig(GruntParser.java:970) 
     at org.apache.pig.tools.pigscript.parser.PigScriptParser.parse(PigScriptParser.java:386) 
     at org.apache.pig.tools.grunt.GruntParser.parseStopOnError(GruntParser.java:189) 
     at org.apache.pig.tools.grunt.GruntParser.parseStopOnError(GruntParser.java:165) 
     at org.apache.pig.tools.grunt.Grunt.exec(Grunt.java:84) 
     at org.apache.pig.Main.run(Main.java:555) 
     at org.apache.pig.Main.main(Main.java:111) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
     at java.lang.reflect.Method.invoke(Method.java:601) 
     at org.apache.hadoop.util.RunJar.main(RunJar.java:156) 
Caused by: Failed to parse: Cannot instantiate: org.apache.pig.piggybank.storage.DBStorage 
     at org.apache.pig.parser.QueryParserDriver.parse(QueryParserDriver.java:184) 
     at org.apache.pig.PigServer$Graph.parseQuery(PigServer.java:1589) 
     ... 14 more 
Caused by: java.lang.RuntimeException: Cannot instantiate: org.apache.pig.piggybank.storage.DBStorage 
     at org.apache.pig.impl.PigContext.instantiateFuncFromSpec(PigContext.java:510) 
     at org.apache.pig.parser.LogicalPlanBuilder.validateFuncSpec(LogicalPlanBuilder.java:791) 
     at org.apache.pig.parser.LogicalPlanBuilder.buildFuncSpec(LogicalPlanBuilder.java:780) 
     at org.apache.pig.parser.LogicalPlanGenerator.func_clause(LogicalPlanGenerator.java:4583) 
     at org.apache.pig.parser.LogicalPlanGenerator.store_clause(LogicalPlanGenerator.java:6225) 
     at org.apache.pig.parser.LogicalPlanGenerator.op_clause(LogicalPlanGenerator.java:1335) 
     at org.apache.pig.parser.LogicalPlanGenerator.general_statement(LogicalPlanGenerator.java:789) 
     at org.apache.pig.parser.LogicalPlanGenerator.statement(LogicalPlanGenerator.java:507) 
     at org.apache.pig.parser.LogicalPlanGenerator.query(LogicalPlanGenerator.java:382) 
     at org.apache.pig.parser.QueryParserDriver.parse(QueryParserDriver.java:175)                     

回答

0

幾點建議。

  1. 我想你在你的jar的路徑中有一個錯誤 - 它不應該成爲家庭嗎?

  2. 在你的路徑

  3. 你是你的MySQL驅動程序註冊後缺少一個分號你不需要引號。

所以應該看起來更像這樣:

REGISTER /home/rdheeraj/pig-0.10.0/code/mysql-connector-java-5.1.17-bin.jar; 
REGISTER /home/rdheeraj/pig-0.10.0/code/piggybank.jar; 
+0

我很抱歉,我已經錯過了在1號線末端的分號。 – 2013-03-01 21:55:13