Cassandra CqlStorage生成错误的Pig架构

Cassandra CqlStorage生成错误的Pig架构,cassandra,apache-pig,cql3,Cassandra,Apache Pig,Cql3,我正在使用CqlStorage将一些简单的数据从Cassandra加载到Pig中。CqlStorageloader基于Cassandra模式定义了一个模式,但它似乎是错误的 如果我这样做: data = LOAD 'cql://bookdata/books' USING CqlStorage(); DESCRIBE data; 我明白了: data: {isbn: chararray,bookauthor: chararray,booktitle: chararray,publisher: c

我正在使用
CqlStorage
将一些简单的数据从Cassandra加载到Pig中。
CqlStorage
loader基于Cassandra模式定义了一个模式,但它似乎是错误的

如果我这样做:

data = LOAD 'cql://bookdata/books' USING CqlStorage();
DESCRIBE data;
我明白了:

data: {isbn: chararray,bookauthor: chararray,booktitle: chararray,publisher: chararray,yearofpublication: int}
但是,如果我
转储
数据
,我会得到如下结果:

((isbn,0425093387),(bookauthor,Georgette Heyer),(booktitle,Death in the Stocks),(publisher,Berkley Pub Group),(yearofpublication,1986))
显然,正如预期的那样,Cassandra的结果是键/值对。我不知道为什么
CqlStorage()
生成的模式会如此不同

这确实给我在访问列值时带来了问题。我尝试了一种天真的方法,将每个元组展平,然后尝试以这种方式访问值:

flattened = FOREACH data GENERATE
  FLATTEN(isbn),
  FLATTEN(booktitle),
  ...
values = FOREACH flattened GENERATE
  $1 AS ISBN,
  $3 AS BookTitle,
  ...
当我试图访问字段
$5
,Pig就抱怨索引超出了范围。(奇怪的是,
flatted
认为它与原始的
数据具有相同的模式

不知何故,
CqlStorage
似乎生成了错误的模式,并且该模式一直存在于原始集合的投影中。有办法解决这个问题吗

(我使用的是Cassandra 1.2.8和Pig 0.11.1)

这是通过在中应用修复程序解决的

正如Alex Lui在我的票中提到的:

git clone http://git-wip-us.apache.org/repos/asf/cassandra.git
cd cassandra
git checkout cassandra-1.2
patch -p1 < 5867-bug-fix-filter-push-down-1.2-branch.txt
ant
git克隆http://git-wip-us.apache.org/repos/asf/cassandra.git
卡桑德拉光盘
git checkout cassandra-1.2
补丁-p1<5867-bug-fix-filter-push-down-1.2-branch.txt
蚂蚁
通过在中应用修复程序解决了此问题

正如Alex Lui在我的票中提到的:

git clone http://git-wip-us.apache.org/repos/asf/cassandra.git
cd cassandra
git checkout cassandra-1.2
patch -p1 < 5867-bug-fix-filter-push-down-1.2-branch.txt
ant
git克隆http://git-wip-us.apache.org/repos/asf/cassandra.git
卡桑德拉光盘
git checkout cassandra-1.2
补丁-p1<5867-bug-fix-filter-push-down-1.2-branch.txt
蚂蚁

如果尝试访问元组之类的字段,会发生什么情况?EG
B=FOREACH数据生成isbn.$0作为键,isbn.$1作为值
尝试访问元组之类的字段会导致
不允许引用chararray类型列中的列
如果尝试访问元组之类的字段会发生什么?EG
B=FOREACH数据生成isbn.$0作为键,isbn.$1作为值
尝试访问元组之类的字段会导致
不允许引用chararray类型列中的列