Hadoop Hive:在所有表的所有列中查找所有出现的字符串?

时间:2014-03-12 12:27:43

标签: java hadoop mapreduce hive

需要有关以下任务的方法和工具的建议。

输入:Hive DB约。 100张桌子。平均表长度为5 000 000行。表中的平均列数为40.表包含所有不同类型的字段,包括字符串类型。

任务:

1.在所有表的所有列中查找包含给定子字符串的所有字符串。这样找到的字符串称为搜索字符串。

2.创建包含两列的表:搜索字符串和table.field字符串列表,指示搜索字符串的位置。

为了解决这个问题,我计划在Hive表上使用map-reduce。然而,看起来有一些限制:

  • 在Java程序中只能为MRD作业设置一个输入表:

    HCatInputFormat.setInput(job, InputJobInfo.create(dbName, inputTableName, null));

  • 当我的MRD作业尝试将数据附加到现有的非空输出表(在上一次运行中已经填充了这个作业的记录!)时,我得到异常:< / p>

    ERROR security.UserGroupInformation: PriviledgedActionException as:TestUser (auth:SIMPLE) cause:org.apache.hcatalog.common.HCatException : 2003 : Non-partitioned table already contains data ...

问题:

  • 如何编写在多个输入Hive表上运行的Java MRD作业?

  • 如何编写Java MRD作业以将数据附加到现有的非空Hive表中?

  • 如何在输入Hive表上运行的Java MRD作业中获取数据库和表名?

谢谢!

0 个答案:

没有答案