使用Scala / Python将来自众多SQL表的产品数据合并并提取到Hadoop键值存储

时间:2014-02-18 16:07:43

标签: python scala hadoop

需要有关以下任务的建议:从众多SQL表中合并和提取产品数据。这些表中的记录包含产品ID和本产品的不同属性。生成的数据应存储在HDFS表中,其中任何给定记录表示与给定产品相关的所有属性。结果记录可能具有可变数量的属性。例如:

Input SQL records:
    Table 1
        Rec 1: |ProdId|x11|x12|x13|...|x1N|
        Rec 2: |ProdId|x21|x22|x23|...|x2N|
        ....
        Rec M: |ProdId|xM1|xM2|xM3|...|xMN|

    Table 2
        Rec 1: |ProdId|y11|y12|y13|...|y1K|
        Rec 2: |ProdId|y21|y22|y23|...|y2K|
        ....
        Rec L: |ProdId|yL1|yL2|yL3|...|xLK|
    ....
    ....
    ....
    Table Z
        Rec 1: |ProdId|z11|z12|z13|...|z1Q|
        Rec 2: |ProdId|z21|z22|z23|...|z2Q|
        ....
        Rec P: |ProdId|zL1|zL2|zL3|...|zPQ|

Output HDFS Table:
        Rec 1: |ProdId|x11|x12|x13|...|x1N|y11|y12|y13|...|y1K|z11|z12|z13|...|z1Q|
        Rec 2: |ProdId|x21|x22|x23|...|x2N|y21|y22|y23|...|y2K|z21|z22|z23|...|z2Q|
        ....
        Rec R: |ProdId|xI1|xI2|xI3|...|xMN|yJ1|yJ2|yJ3|...|xLK|zF1|zF2|zF3|...|zFQ|

结果记录应该有命名字段并存储在HDFS中,因此很容易在用Scala / Java / Python编写的map / reduce作业中使用。

我是Hadoop的新手,可能是错的。使用Hive执行此任务对我来说有点尴尬。使用Map-reduce会很好用,但是我没有看到如何使用scoop将输入SQL数据导入除Hive之外的表以及命名字段。有没有办法将SQL表导出到HBASE,它会自动重建字段名称?任何其他适合此任务的键值存储都支持命名字段?理想情况下是找到允许在Scala或Python中完成这项工作的框架。

1 个答案:

答案 0 :(得分:0)

AFAIK,此任务通常由scoop工具执行。它应该是used from cmd,但是使用Scala扩展它是完全可能的,因为它是用java编写的。