我正在尝试使用Amazon EMR运行Hive查询,并且我也试图让Apache Tez使用它,根据我的理解,需要根据hive.execution.engine
将tez
属性设置为the hive site?
我知道hive属性通常可以使用set hive.{...}
设置,或者在hive-site.xml
中设置,但我不知道这些与Amazon EMR中的任何一个交互/可能如何。
那么:有没有办法在Amazon EMR中设置Hive配置属性,如果有,怎么做?
谢谢!
Amazon Elastic MapReduce(EMR)是部署普通Hadoop发行版的自动化方法。您通常可以针对Hadoop和Hive运行的命令也可以在EMR下运行。
您可以以交互方式(通过登录主节点)或通过脚本(作为作业“步骤”提交)执行配置单元命令。
您将负责在Amazon EMR上安装TEZ。我发现这个论坛帖子:TEZ on EMR
您可以通过两种方式执行此操作:
1)直接在单个HIVE SCRIPT(.hql文件)中
只需将您的属性放在Hive hql脚本的开头,例如:
set hive.execution.engine=tez;
CREATE TABLE...
2)VIA应用配置
创建EMR集群时,可以指定适用于整个集群生命周期的Hive配置。这可以通过AWS管理控制台或AWS CLI进行。
a)AWS管理控制台
hive-site
xml配置中通常具有的所有属性,我突出显示了TEZ属性作为示例。您可以选择从S3路径加载JSON。b)AWS CLI
正如详细说明的here,您可以使用标志--configurations
指定群集创建时的Hive配置,如下所示:
aws emr create-cluster --configurations file://configurations.json --release-label emr-5.9.0 --instance-groups InstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.large InstanceGroupType=CORE,InstanceCount=2,InstanceType=m4.large --auto-terminate
JSON文件与管理控制台示例中显示的内容相同。
同样,您可以选择指定S3路径:
--configurations https://s3.amazonaws.com/myBucket/configurations.json