- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我一直读到,如果您的应用程序经常更改并且经常添加功能,Cassandra 会很好。
这是有道理的,因为您没有任何固定的架构,您可以向行添加列来满足您的需求,而不是运行 ALTER TABLE 查询,这可能会使您的数据库因非常大的表而卡住数小时。
但是我有一个我无法解决的假设性问题。假设我有:
CREATE COLUMN FAMILY Students
with comparator='CompositeType(UTF8Type,UTF8Type),
and key_validation_class=UUIDType;
每个学生都有一些通用列(您知道,meta:username、meta:password、meta:surname 等),而且每个学生可以学习 N 门类(class)。此 N-N 关系使用非规范化解决,为每个学生添加 N 列(类(class):ID1,类(class):ID2)。
另一方面,我可能有一个 Courses CF,其中每一行都包含以下所有学生 UUID。
所以我可以问“哪些类(class)是XXX”和“哪些学生是YYY”。
问题是:如果我没有创建第二个列族怎么办?也许在构建应用程序时,让学生学习特定类(class)并不是必需的。
这是一个简单的例子,但我相信它很常见。 “使用 Cassandra,您可以根据查询而不是关系来规划 CF”。我现在需要那个查询,而一开始不需要。
给定一个包含数千个条目的学生表,您将如何填充 Courses CF?这是 Hadoop、Pig 或 Hive 的工作吗(我从未接触过其中任何一个,只是猜测)。
最佳答案
Pig(使用 Hadoop 集成)实际上非常适合此类工作,因为您不仅可以读取数据,还可以使用 CassandraStorage 将数据写回 Cassandra。它为您提供并行处理能力,以最少的时间和开销完成工作。否则,另一种方法是自己编写一些东西来进行提取,然后编写新的 CF。
这是一个 Pig 示例,它根据一个 CF 中的一组数据计算平均值并将它们输出到另一个:
rows = LOAD 'cassandra://HadoopTest/TestInput' USING CassandraStorage() AS (key:bytearray,cols:bag{col:tuple(name:chararray,value)});
columns = FOREACH rows GENERATE flatten(cols) AS (name,value);
grouped = GROUP columns BY name;
vals = FOREACH grouped GENERATE group, columns.value AS values;
avgs = FOREACH vals GENERATE group, 'Pig_Average' AS name, (long)SUM(values.value)/COUNT(values.value) AS average;
cass_group = GROUP avgs BY group;
cass_out = FOREACH cass_group GENERATE group, avgs.(name, average);
STORE cass_out INTO 'cassandra://HadoopTest/TestOutput' USING CassandraStorage();
关于hadoop - 如何从另一个列中填充 Cassandra 列族?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13765732/
在C中,protocol family被提及为第一个参数。 例如: ipv4 的套接字(AF_INET,,) socket(AF_PACKET,,) 用于数据包嗅探 Python 支持三个地址族:AF
根据 vfork() 手册页,如果 vfork() 在调用 _exit 或 exec 之前修改除 pid_t 之外的任何数据,则行为未定义系统调用系列。 由此我了解到,如果vfork()创建的子进程调
我是一名优秀的程序员,十分优秀!