如何使用Pig在cassandra中插入数据

时间:2014-02-22 17:25:35

标签: cassandra apache-pig

我正在尝试使用Pig将数据从HDFS中的文件复制到Cassandra中的表。但是在Cassandra中存储数据时,作业失败,并且空指针异常。有人可以帮我这个吗?

用户表格结构:

CREATE TABLE用户(   user_id文本PRIMARY KEY,   年龄int,   第一个文字,   最后的文字 )

我的猪脚本

  1. A =使用PigStorage(',')加载'/user/hduser/user.txt'(id:chararray,age:int,fname:chararray,lname:chararray);

    < / LI>
  2. C = foreach A GENERATE TOTUPLE(TOTUPLE('user_id',id)),TOTUPLE('age',age),TOTUPLE('first',fname),TOTUPLE('last',lname);

  3. 将C存储到'cql:// ram_keyspace / users'使用CqlStorage();

  4. 例外:

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

    使用Pig with Cassandra的人可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分: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;