我正在尝试使用pig将hdfs中的文件中的数据复制到cassandra中的表中。但在cassandra中存储数据时,作业失败,出现空指针异常。有人能帮我吗?
用户表结构:
创建表用户(user\ id text主键,age int,first text,last text)
我的Pig剧本
a=load'/user/hduser/user.txt',使用pigstorage(',')作为(id:chararray,age:int,fname:chararray,lname:chararray);
c=foreach a generate totuple(totuple('user_id',id))、totuple('age',age)、totuple('first',fname)、totuple('last',lname);
将c存储到'cql://ram_keyspace/users'使用cqlstorage();
例外情况:
java.lang.runtimeexception:org.apache.cassandra.hadoop.cql3.cqlrecordwriter上的java.lang.nullpointerexception(cqlrecordwriter)。java:123)在org.apache.cassandra.hadoop.cql3.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)位于javax.security.auth.subject.doas(subject)的java.security.accesscontroller.doprivileged(本机方法)。java:415)在org.apache.hadoop.security.usergroupinformation.doas(用户组信息。java:1190)在org.apache.hadoop.mapred.child.main(child。java:249)原因:org.apache.cassandra.hadoop.cql3.cqlrecordwriter上的java.lang.nullpointerexception(cqlrecordwriter)。java:109) ... 12个以上
有人用过Cassandra的Pig能帮我解决这个问题吗?
1条答案
按热度按时间0tdrvxhp1#
您正在使用cqlstorage,它要求您指定
output_query
它是一个准备好的语句,用于将数据插入列族。dse清管器文档提供了一个示例: