2014-02-22 32 views
1

我想將數據從HDFS中的文件複製到卡桑德拉使用豬。但是在將數據存儲在Cassandra中時,作業失敗並出現空指針異常。有人可以幫我弄這個嗎?如何插入數據在卡桑德拉使用豬

用戶表結構:

CREATE TABLE用戶( user_ID的文本PRIMARY KEY, 年齡INT, 第一個文本, 最後文本 )

我的豬腳本

  1. A = load'/ user/hduser/use r.txt'使用PigStorage(',')as(id:chararray,age:int,fname:chararray,lname:chararray); (TURUPLE('user_id',id)),TOTUPLE('age',age),TOTUPLE('first',fname),TOTUPLE('last',lname);以及如何使用這個TOTUPLE('user_id',id)

  2. 將C存儲到'cql:// ram_keyspace/users'USING CqlStorage();

例外:

了java.lang.RuntimeException:顯示java.lang.NullPointerException 在org.apache.cassandra.hadoop.cql3.CqlRecordWriter(CqlRecordWriter.java:123) 在有機.apache.cassandra.hadoop.cql3.CqlRecordWriter。(CqlRecordWriter.java:90) at org.apache.cassandra.hadoop.cql3.CqlOutputFormat.getRecordWriter(CqlOutputFormat.java:76) at org.apache.cassandra.hadoop。 cql3.CqlOutputFormat.getRecordWriter(CqlOutputFormat.java:57) at org.apache.pig.backend.hadoop。 executionengine.mapReduceLayer.PigOutputFormat.getRecordWriter(PigOutputFormat.java:84) 在org.apache.hadoop.mapred.MapTask $ NewDirectOutputCollector。(MapTask.java:627) 在org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask .java:753) at org.apache.hadoop.mapred.MapTask.run(MapTask.java:364) at org.apache.hadoop.mapred.Child $ 4.run(Child.java:255) at java。 security.AccessController.doPrivileged(Native Method) at javax.security.auth.Subject.doAs(Subject.java:415) at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1190) at org .apache.hadoop.mapred.Child.main(Child.java:249) 引起:java.lang.NullPointerException at org.apache.cassand ra.hadoop.cql3.CqlRecordWriter。(CqlRecordWriter.java:109) ... 12更多

能和Cassandra一起使用Pig的人能幫我解決這個問題嗎?

+0

什麼版本的Cassandra? – psanford

+0

Cassandra版本是1.2.13 – user3207663

回答

0

您正在使用CqlStorage,它要求您指定output_query這是一個準備好的語句,將用於將數據插入到列族中。 DSE pig documentation提供了一個例子:

grunt> STORE insertformat INTO 
    'cql://cql3ks/simple_table1?output_query=UPDATE+cql3ks.simple_table1+set+b+%3D+%3F' 
    USING CqlStorage;