我在互动模式下在Elastic MapReduce上运行Hive:
./弹性 - 马普雷德 - 创建-Hive-interactive
和脚本模式:
./弹性 - 摩普拉德 - 库存-Hive-script -arg s3://mybucket/myfile.q
我想在我自己的服务器上拥有一个应用程序(最好是在PHP,R或Python中),可以旋转一个弹性MapReduce群集并运行多个Hive命令,同时以可拆卸形式获得其输出。<</p>我知道旋转集群可能需要一些时间,因此也许我的应用程序可能必须在单独的步骤中这样做,并等待群集准备就绪。但是,有什么办法可以做类似的假设例子:
- 创建Hive Table Customer_orders
- 运行Hive查询"选择DT,从Customer_orders组中计数(*)dt"
- 等待结果
- parse结果php
- 运行蜂巢查询"从customer_orders中选择最大(id)"
- 等待结果
- parse导致PHP...
有人对我如何这样做有任何建议吗?
您可以使用mrjob。它使您可以在Python 2.5 中编写MapReduce作业,并在多个平台上运行它们。
一种替代方案是令人讨厌的,这是一个很棒的项目,也许应该足以满足您的所有需求。Hipy的目的是支持Python中蜂巢查询的程序化结构,并更轻松地管理查询,包括带有转换脚本的查询。
hipy可以在一个查询的单个脚本中一起分组 构建,转换脚本和后处理。这有助于 脚本的可追溯性,文档和可重复使用性。一切 出现在一个地方,Python评论可用于记录 脚本。
蜂巢查询是通过组成少数python对象来构建的 代表列,表和选择语句之类的内容。 在此过程中,Hipy跟踪结果的模式 查询输出。
变换脚本可以包含在Python的主体中 脚本。Hipy将照顾将脚本的代码提供给 蜂巢以及数据的序列化和除外序列化to/trom Python数据类型。如果任何数据列都包含JSON,则Hipy采用 照顾转换为python数据类型的转换。
查看文档以获取详细信息!