目前,我正在开发一个数据挖掘项目,该项目处理hdfs
上存储的数据。该项目的第一件事是将来自不同数据库或表的数据集成到hdfs
中存储的统一表中。
通过阅读SalvadorGarcía,JuliánLuengo和Francisco Herrera的 数据挖掘中的数据预处理 ,我了解到数据集成中存在许多挑战或问题,例如:以下是:
Table A
,它具有属性index
,而Table B
具有属性identifier
,而这两个属性表示相同的含义相同的对象。因此,如果我们只使用naive join处理这两个表,则统一表中可能存在冗余属性。meta-data
以消除冗余字段。 Table A
,它具有属性salary_per_month
,而Table B
具有属性salary_per_year
。但这两个属性是相关的,salary_per_month
可以推断salary_per_year
。然后与上述情况类似,创建冗余属性。除了上述挑战外,很多情况都是可能的(只是简短的描述,没有具体的例子):
table A
和来自 MySQL 的table B
整合到一个存储在hdfs中的表中,通过一种连接操作。table A
和B
集成到存储在hdfs中的一个表中。 / LI>
以上是所有问题和可能的情况。我理解上述问题的基本概念,但我不知道如何在实际项目中解决上述问题,特别是基于hdfs
。似乎对于属性冗余和相关性等问题只能在我知道如何设计表的情况下解决,即所谓的硬编码。我可以通过Hadoop生态系统提供的API自动解决它们吗?
同样,由于很多情况都是可能的,我想知道数据集成中要遵循的一般步骤,在真正的大数据项目中使用哪些常用工具,数据预处理非常重要?任何指导对我都有帮助。
答案 0 :(得分:0)
对于多语言查询(从多个数据源中提取数据),我更喜欢 Spark 或 Drill 。
使用这些工具,您可以执行联接和其他聚合内存中(,如果数据不是太大)
您可以使用所需的文件格式轻松地将输出写入HDFS。
交易管理等挑战仍然存在。但是这些查询引擎很容易解决许多问题。