【问题标题】:cassandra hive insert null exceptioncassandra hive 插入空异常
【发布时间】:2013-10-04 23:18:52
【问题描述】:

尝试使用 hive 通过 DSE 3.1.3 将数据导入 Cassandra。似乎不支持通过 hive 插入 NULL 值。支持吗?

人为的例子:

cqlsh:
create table foo(id text, name text, primary key(id));
create table fooo(id text, name text, primary key(id));

insert into foo(id,name) values('a',null);

hive: (use keyspace where foo and fooo were created)
insert into table fooo select id,null from foo;

Stack from jobtracker...

java.lang.RuntimeException: org.apache.hadoop.hive.ql.metadata.HiveException: Hive Runtime Error while processing row {"id":"a","name":""}
    at org.apache.hadoop.hive.ql.exec.ExecMapper.map(ExecMapper.java:161)
    at org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:50)
    at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:436)
    at org.apache.hadoop.mapred.MapTask.run(MapTask.java:372)
    at org.apache.hadoop.mapred.Child$4.run(Child.java:266)
    at java.security.AccessController.doPrivileged(Native Method)
    at javax.security.auth.Subject.doAs(Subject.java:396)
    at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1121)
    at org.apache.hadoop.mapred.Child.main(Child.java:260)
Caused by: org.apache.hadoop.hive.ql.metadata.HiveException: Hive Runtime Error while processing row {"id":"a","name":""}
    at org.apache.hadoop.hive.ql.exec.MapOperator.process(MapOperator.java:548)
    at org.apache.hadoop.hive.ql.exec.ExecMapper.map(ExecMapper.java:143)
    ... 8 more
Caused by: java.lang.NullPointerException
    at org.apache.hadoop.hive.serde2.lazy.LazyUtils.writePrimitiveUTF8(LazyUtils.java:220)
    at org.apache.hadoop.hive.cassandra.serde.AbstractTableMapping.serialize(AbstractTableMapping.java:149)
    at org.apache.hadoop.hive.cassandra.serde.AbstractTableMapping.serializeToBytes(AbstractTableMapping.java:118)
    at org.apache.hadoop.hive.cassandra.cql3.serde.CqlTableMapping.getWritable(CqlTableMapping.java:53)
    at org.apache.hadoop.hive.cassandra.serde.AbstractColumnSerDe.serialize(AbstractColumnSerDe.java:150)

【问题讨论】:

  • 我自己也遇到了这个问题,虽然没有明确的空值。我认为 DSE 3.1.2-3 中的 Hive CQL3 SERDE 存在潜在问题

标签: insert null cassandra hive


【解决方案1】:

我们会解决这个问题。它无法将 null 序列化为 Hive

【讨论】:

  • 有bug编号可以参考吗?谢谢!
【解决方案2】:

我刚刚在最新的 DSE 版本 3.1.4 中尝试过,现在可以正常工作了。

http://www.datastax.com/docs/datastax_enterprise3.1/dse_release_notes#datastax-enterprise-3-1-4-release-notes

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-02
    • 1970-01-01
    • 1970-01-01
    • 2014-04-18
    • 2017-04-04
    • 1970-01-01
    • 1970-01-01
    • 2020-03-19
    相关资源
    最近更新 更多