【问题标题】:Insert data into Cassandra from Pig using list datatype fails使用列表数据类型将数据从 Pig 插入 Cassandra 失败
【发布时间】:2014-11-15 04:54:54
【问题描述】:

我有以下场景:

Cassandra 中的表:

CREATE TABLE tb_st_test (
  id int,
  email list<text>,
  PRIMARY KEY ((id));

猪代码:

teste = LOAD 'cql://main/tb_st_test' USING CqlStorage();

testing = FOREACH teste GENERATE $0 as cod, ['emailtest@test.com'] as field:();

insert_test = 
FOREACH testing GENERATE
TOTUPLE(
TOTUPLE('id',cod)
),
TOTUPLE(field);

STORE insert_test INTO 'cql://main/tb_st_test?output_query=UPDATE tb_st_test set email %3D%3F' USING CqlStorage();

这里的思路是读取表tb_st_test,获取键值,更新字段email。 但是当我运行脚本时,出现以下错误:

后端错误信息

java.io.IOException: org.apache.thrift.transport.TTransportException
        at org.apache.cassandra.hadoop.cql3.CqlRecordWriter$RangeClient.run(CqlRecordWriter.java:256)
Caused by: org.apache.thrift.transport.TTransportException
        at org.apache.thrift.transport.TIOStreamTransport.read(TIOStreamTransport.java:132)
        at org.apache.thrift.transport.TTransport.readAll(TTransport.java:84)
        at org.apache.thrift.transport.TFramedTransport.readFrame(TFramedTransport.java:129)
        at org.apache.thrift.transport.TFramedTransport.read(TFramedTransport.java:101)
        at org.apache.thrift.transport.TTransport.readAll(TTransport.java:84)
        at org.apache.thrift.protocol.TBinaryProtocol.readAll(TBinaryProtocol.java:362)
        at org.apache.thrift.protocol.TBinaryProtocol.readI32(TBinaryProtocol.java:284)
        at org.apache.thrift.protocol.TBinaryProtocol.readMessageBegin(TBinaryProtocol.java:191)
        at org.apache.thrift.TServiceClient.receiveBase(TServiceClient.java:69)
        at org.apache.cassandra.thrift.Cassandra$Client.recv_execute_prepared_cql3_query(Cassandra.java:1820)
        at org.apache.cassandra.thrift.Cassandra$Client.execute_prepared_cql3_query(Cassandra.java:1805)
        at org.apache.cassandra.hadoop.cql3.CqlRecordWriter$RangeClient.run(CqlRecordWriter.java:240)

有人知道这是怎么回事吗?

【问题讨论】:

    标签: hadoop cassandra apache-pig datastax-enterprise datastax


    【解决方案1】:

    insert_test 格式错误,列表集合格式应为 TOTUPLE(TOUTUPLE('some email', 'email2'))。检查https://issues.apache.org/jira/browse/CASSANDRA-5867

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-24
      • 2012-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-06
      相关资源
      最近更新 更多