目前,我正在从事一个数据挖掘项目,该项目处理存储在 hdfs
. 该项目的第一件事是将来自不同数据库或表的数据集成到存储在数据库中的统一表中 hdfs
.
通过阅读salvardor-garc在数据挖掘中的数据预处理ía、 朱利án luengo和francisco herrera,我了解到数据集成中存在许多挑战或问题,例如:
属性冗余:
例如:例如 Table A
,有属性 index
,和 Table B
具有属性 identifier
,而这两个属性表示同一对象的相同含义。因此,如果我们只是处理这两个表与天真的连接,冗余的属性可能存在于统一的表。
书中建议的解决方法:比较 meta-data
以消除多余的字段。
属性相关性:
例如:例如 Table A
,有属性 salary_per_month
,和 Table B
具有属性 salary_per_year
. 但这两个属性是相互关联的 salary_per_month
可以推断 salary_per_year
. 然后与上述情况类似,创建冗余属性。
本书建议的解决方法:应用相关检验或卡方检验来确定不同领域之间的关系。
伴随着上述挑战,可能会出现很多情况(只是简单的描述,没有具体的例子):
案例1:
description:集成 table A
来自mongodb和 table B
通过一种join操作将mysql转换成一个存储在hdfs中的表。
注意:这种情况并不经常发生,但仍有可能发生。
案例2:
description:集成 table A
以及 B
从mongodb(或mysql)到hdfs中存储的一个表。
注意:本例只涉及一种类型的数据库。
以上是所有的问题和可能的情况。我理解上述问题的基本概念,但我不知道如何在实际项目中解决上述问题,特别是基于 hdfs
. 看来对于属性冗余和相关性等问题只有在我知道表是如何设计的情况下才能解决,所谓硬编码。我能用hadoop生态系统提供的api自动解决它们吗?
再说一次,由于很多情况都是可能的,我想知道在数据集成中要遵循哪些一般步骤,在数据预处理非常重要的实际大数据项目中要使用哪些常用工具?任何指导对我都有帮助。
1条答案
按热度按时间3duebb1j1#
对于polyglot查询(从多个数据源获取数据),我更喜欢spark或drill。
使用这些工具,您可以在内存中执行连接和其他聚合(如果数据不太大)
您可以轻松地将输出以所需的文件格式写入hdfs。
像事务管理这样的挑战仍然存在。但是这些查询引擎很容易解决许多问题。