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

如何使用Pig在cassandra中插入数据,cassandra,apache-pig,Cassandra,Apache Pig,我正在尝试使用Pig将HDFS中的文件中的数据复制到Cassandra中的表中。但是当将数据存储在Cassandra中时,作业失败,出现空指针异常。有人能帮我吗 用户表结构: 创建表用户( 用户id文本主键, 年龄智力, 第一个文本, 最后文本 ) 我的猪脚本 A=使用PigStorage(',')作为(id:chararray,age:int,fname:chararray,lname:chararray)加载'/user/hduser/user.txt' C=每个A生成一个TOTUPLE(T

我正在尝试使用Pig将HDFS中的文件中的数据复制到Cassandra中的表中。但是当将数据存储在Cassandra中时,作业失败,出现空指针异常。有人能帮我吗

用户表结构:

创建表用户( 用户id文本主键, 年龄智力, 第一个文本, 最后文本 )

我的猪脚本

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

  • C=每个A生成一个TOTUPLE(TOTUPLE('user_id',id)),TOTUPLE('age',age),TOTUPLE('first',fname),TOTUPLE('last',lname)

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

  • 例外情况:

    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) 位于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) 位于java.security.AccessController.doPrivileged(本机方法) 位于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和Cassandra的人能帮我解决这个问题吗?

    您使用的是CqlStorage,它要求您指定
    输出查询
    ,这是一条准备好的语句,将用于将数据插入列族。提供了一个示例:

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

    什么版本的卡桑德拉?卡桑德拉版本是1.2.13