从应用程序运行弹性MapReduce Hive查询



我在互动模式下在Elastic MapReduce上运行Hive:

./弹性 - 马普雷德 - 创建-Hive-interactive

和脚本模式:

./弹性 - 摩普拉德 - 库存-Hive-script -arg s3://mybucket/myfile.q

我想在我自己的服务器上拥有一个应用程序(最好是在PHP,R或Python中),可以旋转一个弹性MapReduce群集并运行多个Hive命令,同时以可拆卸形式获得其输出。<</p>我知道旋转集群可能需要一些时间,因此也许我的应用程序可能必须在单独的步骤中这样做,并等待群集准备就绪。但是,有什么办法可以做类似的假设例子:

  1. 创建Hive Table Customer_orders
  2. 运行Hive查询"选择DT,从Customer_orders组中计数(*)dt"
  3. 等待结果
  4. parse结果php
  5. 运行蜂巢查询"从customer_orders中选择最大(id)"
  6. 等待结果
  7. parse导致PHP...

有人对我如何这样做有任何建议吗?

您可以使用mrjob。它使您可以在Python 2.5 中编写MapReduce作业,并在多个平台上运行它们。

一种替代方案是令人讨厌的,这是一个很棒的项目,也许应该足以满足您的所有需求。Hipy的目的是支持Python中蜂巢查询的程序化结构,并更轻松地管理查询,包括带有转换脚本的查询。

hipy可以在一个查询的单个脚本中一起分组 构建,转换脚本和后处理。这有助于 脚本的可追溯性,文档和可重复使用性。一切 出现在一个地方,Python评论可用于记录 脚本。

蜂巢查询是通过组成少数python对象来构建的 代表列,表和选择语句之类的内容。 在此过程中,Hipy跟踪结果的模式 查询输出。

变换脚本可以包含在Python的主体中 脚本。Hipy将照顾将脚本的代码提供给 蜂巢以及数据的序列化和除外序列化to/trom Python数据类型。如果任何数据列都包含JSON,则Hipy采用 照顾转换为python数据类型的转换。

查看文档以获取详细信息!

最新更新