gpt4 book ai didi

hadoop - 将多个互连的 csv 文件上传到 HBase 的方法

转载 作者:可可西里 更新时间:2023-11-01 16:38:41 27 4
gpt4 key购买 nike

我是 HBase 的新手,仍然不确定在我的案例中我将使用 Hadoop 生态系统的哪个组件以及稍后如何分析我的数据,所以只是探索选项。

我有一个 Excel 表,其中包含关于所有客户的摘要,但有 ≈ 400 列:

CustomerID    Country    Age    E-mail
251648 Russia 27 boo@yahoo.com
487985 USA 30 foo@yahoo.com
478945 England 15 lala@yahoo.com
789456 USA 25 nana@yahoo.com

此外,我还为每个客户分别创建了 .xls 文件,其中包含有关他的信息(一个客户 = 一个 .xls 文件),每个文件中的列数和列名都相同。这些文件中的每一个都以 CustomerID 命名。一个看起来像这样:

'customerID_251648.xls':

feature1 feature2 feature3 feature4
0 33,878 yes 789,598
1 48,457 yes 879,594
1 78,495 yes 487,457
0 94,589 no 787,475

我已将所有这些文件转换为 .csv 格式,现在我感到困惑的是我应该使用 Hadoop 生态系统的哪个组件来存储和查询此类数据。

我的最终目标是查询一些客户 ID 并从所有文件中获取有关客户的所有信息。

我认为 HBase 非常适合,因为我可以创建这样的模式:

row key timestamp   Column Family 1                   Column Family 2           
251648 Country Age E-Mail Feature1 Feature2 Feature3 Feature4

在 HBase 中上传和查询此类数据的最佳方法是什么?我是否应该先将来自不同来源的有关客户的信息组合起来,然后将其上传到HBase?或者我可以为每个客户保留不同的 .csv 文件,并在上传到 HBase 时选择以某种方式使用哪个 .csv 来形成列族?

为了查询存储在 HBase 中的数据,我将通过 Python API 编写 MapReduce 任务。

如有任何帮助,我们将不胜感激!

最佳答案

您的模式设计是正确的,还要记住 hbase 在扫描期间加载整个列族,因此如果您一次需要所有数据,最好将所有数据放在一个列族中。

加载数据的一种简单方法是与客户一起扫描第一个文件,然后从第二个文件中即时获取数据。批量 CSV 加载的执行时间可能会更快,但您将花费更多时间编写代码。

也许您还需要考虑行键,因为 HBase 按字母顺序存储数据。如果您有大量数据,最好使用给定的拆分键创建表,而不是让 HBase 进行拆分,因为它最终可能会出现不平衡的区域。

关于hadoop - 将多个互连的 csv 文件上传到 HBase 的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46120991/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com