如何使用 Pig 从 Cassandra 加载 CF/TABLE

Posted

技术标签:

【中文标题】如何使用 Pig 从 Cassandra 加载 CF/TABLE【英文标题】:how to use Pig to load CF/TABLE from Cassandra 【发布时间】:2013-12-09 05:48:20 【问题描述】:

当我尝试通过 pig 从 Cassandra 加载表数据集时,遇到了一些问题。目前,Cassandra 版本为 2.0.3。

下面是我的数据集的两行

>the format is "user_name","tweet","user_id':
>chaaiinzz | RT @Luis_Cortes35: @3_chaaiinzz @jonaski720 @sarajanellxo @skylalopez man I love this Spanish class | 408845338091343872
>Jessicaokelley | Absolutely love the movie "The Mortal Instruments: City Of Bones!! | 408845337965907968

创建键空间并将数据集复制到表 twitters。

cqlsh:pxh130430> CREATE KEYSPACE cql3ks WITH replication = 'class': 'SimpleStrategy', 'replication_factor': 1 ;
cqlsh:pxh130430> use cql3ks;
cqlsh:cql3ks> CREATE TABLE twitters ( user_id varchar PRIMARY KEY, tweet varchar, user varchar);
cqlsh:cql3ks> COPY twitters (user, tweet, user_id) FROM '/tmp/nameT.csv' with delimiter = '|';
3625 rows imported in 2.142 seconds.
cqlsh:cql3ks> select count(*) from twitters;
count
-------
3620
(1 rows)

在 Pig 中加载数据

grunt> moretestvalues= LOAD 'cql://cql3ks/twitters/' USING CqlStorage;
grunt> describe moretestvalues;
moretestvalues: user_id: chararray,tweet: chararray,user: chararray,user_id: chararray
grunt> dump moretestvalues;
2013-12-08 22:09:19,337 [main] ERROR org.apache.pig.tools.grunt.Grunt -ERROR 1108: Duplicate schema alias: user_id in "moretestvalues"
Details at logfile: /Users/pengyuhou/apache-    cassandra/examples/pig/bin/pig_1386562141091.log

实际上,我只有三列和一个“user_id”列。我不知道为什么 pig 会导致两个“user_id”列。

你们有什么想法吗?谢谢!!!

【问题讨论】:

【参考方案1】:

这是一个已知错误,应使用Cassandra-6309 修复

【讨论】:

谢谢!!你知道如何使用“6309-fix-pig-test-compiling.txt”来修复这个bug吗? 您需要从 github 获取 Cassandra Repo。使用“git apply”应用补丁。使用“ant build”重新编译 Cassandra。使用你新编译的 Cassandra。 谢谢。我尝试了另一种使用 Cassandra 1.2 和 Pig 0.7 的方法。最后,它确实对我有用。 您要检查我的另一个问题吗?谢谢!在这里:issues.apache.org/jira/browse/CASSANDRA-6466 使用 cqlstorage 引擎获得更易于使用的格式化。

以上是关于如何使用 Pig 从 Cassandra 加载 CF/TABLE的主要内容,如果未能解决你的问题,请参考以下文章

使用 pig 将小数导入 cassandra

如何在 Pig 中过滤 Cassandra TimeUUID/UUID

用于将日志文件加载到 cassandra 的堆栈

Pig into Cassandra - 使用 python UDF 和 CqlStorage 传递列表对象

cassandra + pig 宽柱

将 PIG 与 cassandra 一起使用的限制