当前位置: 首页 > 知识库问答 >
问题:

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

任长卿
2023-03-14

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

用户表结构:

创建表用户(user\u id text主键、age int、第一个文本、最后一个文本)

我的猪脚本

>

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

    C=foreach A GenerERATE 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。阿帕奇。卡桑德拉。hadoop。cql3.CqlRecordWriter。(CqlRecordWriter.java:123)位于org。阿帕奇。卡桑德拉。hadoop。cql3.CqlRecordWriter。(CqlRecordWriter.java:90)位于org。阿帕奇。卡桑德拉。hadoop。cql3.CqlOutputFormat。位于org的getRecordWriter(CqlOutputFormat.java:76)。阿帕奇。卡桑德拉。hadoop。cql3.CqlOutputFormat。位于org的getRecordWriter(CqlOutputFormat.java:57)。阿帕奇。猪后端。hadoop。executionengine。mapReduceLayer。PigOutputFormat。org上的getRecordWriter(PigOutputFormat.java:84)。阿帕奇。hadoop。映射。MapTask$NewDirectOutputCollector。(MapTask.java:627)位于org。阿帕奇。hadoop。映射。MapTask。在org上运行NewMapper(MapTask.java:753)。阿帕奇。hadoop。映射。MapTask。在org上运行(MapTask.java:364)。阿帕奇。hadoop。映射。儿童4美元。在java上运行(Child.java:255)。安全AccessController。javax上的doPrivileged(本机方法)。安全授权。主题doAs(Subject.java:415)位于org。阿帕奇。hadoop。安全用户组信息。doAs(UserGroupInformation.java:1190)位于org。阿帕奇。hadoop。映射。小孩main(Child.java:249)由:java引起。组织中的lang.NullPointerException。阿帕奇。卡桑德拉。hadoop。cql3.CqlRecordWriter。(CqlRecordWriter.java:109)。。。12个以上

    有人谁使用过猪与卡珊德拉帮助我解决这个问题?

  • 共有1个答案

    司徒浩思
    2023-03-14

    您正在使用CqlStorage,它要求您指定output_query,这是一个准备好的语句,将用于将数据插入列族。DSE猪留档提供了一个示例:

    grunt> STORE insertformat INTO
       'cql://cql3ks/simple_table1?output_query=UPDATE+cql3ks.simple_table1+set+b+%3D+%3F'
       USING CqlStorage;
    
     类似资料:
    • 我正在尝试使用hector API将数据插入到cassandra数据库中。下面显示了我使用的代码。 但是在给定的keyspace下的/var/lib/cassandra/data文件夹中找不到任何插入的数据。数据插入似乎不能正常工作。代码有什么问题。下面显示了我用来创建'data'列族的命令。

    • 我是卡桑德拉的新人。我必须使用c#在卡桑德拉中一次性插入50000行。我正在使用卡桑德拉c#驱动程序。我正在使用以下代码在卡桑德拉中插入数据。请帮帮我 我收到错误:批处理中的语句无效:只允许UPDATE、INSERT和DELETE语句。

    • 命令用于将数据插入到表的列中。 语法: 示例: 在之前的文章中,我们创建一个名为“”的表,其中包含列(, , ),需要在表中插入一些数据。 我们来看看向“”表中插入数据的代码 - 在执行上面语句插入数据后,可以使用SELECT命令验证是否成功插入了数据。 执行结果如下所示 - 如下图所示 -

    • 我有一个带有日期类型列的cassandra表,如下所示: 我正在使用springboot 1.5.2+spring数据卡桑德拉启动程序。 我将按以下方式插入新人: 它将抛出以下错误: 但是如果我将dob列类型设置为timestamp,那么它就可以正常工作。是否可以有日期类型列并使用java.util.date类型属性? 附注:即使我使用java.sql.date,我也会得到同样的错误。

    • 我的cassandra DB结构: 我的代码: 我有一个错误,所以从print语句中获取查询,如下所示: 然后我手动运行此查询到cql,得到以下错误: 语法异常: