2

对某些人来说,这可能是一个有趣的问题:

给定:存储在SQL Server (RDBMS) 中的 2-3 TB 数据,认为它类似于亚马逊的数据,即用户 -> 他们看到/点击查看的内容 -> 他们购买了什么

任务:制作一个推荐引擎(如亚马逊),向用户显示,购买此产品的客户也购买了此产品->如果您喜欢此产品,那么您可能会喜欢此产品->(也)一种数据挖掘来预测未来的购买习惯好(数据挖掘)。依此类推,基本上是一个reco引擎。

问题:由于数据量巨大(5-6 年的用户习惯数据),我认为 Hadoop 是最终的解决方案。现在的问题是,要使用哪些技术工具组合?

HDFS:底层文件系统

HBASE/HIVE/猪:?

Mahout:为了运行一些算法,我假设使用 Map-Reduce(遗传、集群、数据挖掘等)

- 我错过了什么?为所有这些处理加载 RDBMS 数据怎么样?(用于 Hadoop 的 Sqoop?

- 在这一切结束时,我得到一个结果列表(reco's),或者有一种方法可以直接查询它并将其报告给我在.NET中构建的前端?

我认为这个问题的答案,对于像我这样想在未来开始他们的 hadoop 实验的许多人来说可能是一个很好的讨论。

4

2 回答 2

1

对于从 RDBMS 加载数据,我建议查看 BCP(从 SQL 导出到平面文件)然后使用 Hadoop 命令行加载到 HDFS。Sqoop 对持续数据很有用,但对于您的初始负载来说,它的速度会慢得令人无法忍受。

要从 Hadoop 查询结果,您可以使用 HBase(假设您需要低延迟查询),可以通过其 Thrift API 从 C# 查询。

于 2012-05-09T14:35:19.523 回答
0

HBase 可以适合您的场景。HDFS 是底层文件系统。尽管如此,除非您使用 HBase 文件格式 (HFile),否则您无法在 HBase 中加载 HDFS(以任意格式)查询中的数据

HBase 与 MR 集成。Pig 和 Hive 也与 HBase 集成。正如 Chris 所提到的,您可以使用 Thrift 执行查询(获取、扫描),因为这将提取特定的用户信息而不是海量数据集,它比使用 MR 更合适。

于 2012-05-09T19:10:54.790 回答