我正在尝试使用 Amazon EMR 运行 Hive 查询,并试图让 Apache Tez 也可以使用它,据我所知,这需要根据hive 站点hive.execution.engine
设置属性?tez
我知道 hive 属性可以设置为set hive.{...}
通常或在 中hive-site.xml
,但我不知道其中任何一个如何与/在 Amazon EMR 中进行交互。
那么:有没有办法在 Amazon EMR 中设置 Hive 配置属性,如果可以,如何设置?
谢谢!
我正在尝试使用 Amazon EMR 运行 Hive 查询,并试图让 Apache Tez 也可以使用它,据我所知,这需要根据hive 站点hive.execution.engine
设置属性?tez
我知道 hive 属性可以设置为set hive.{...}
通常或在 中hive-site.xml
,但我不知道其中任何一个如何与/在 Amazon EMR 中进行交互。
那么:有没有办法在 Amazon EMR 中设置 Hive 配置属性,如果可以,如何设置?
谢谢!
您可以通过两种方式做到这一点:
1) 直接在单个 HIVE 脚本中(.hql 文件)
只需将您的属性放在 Hive hql 脚本的开头,例如:
set hive.execution.engine=tez;
CREATE TABLE...
2) 通过应用程序配置
创建 EMR 集群时,您可以指定适用于整个集群生命周期的 Hive 配置。这可以通过 AWS 管理控制台或 AWS CLI 进行。
a) AWS 管理控制台
hive-site
xml 配置中拥有的所有属性,我突出显示了 TEZ 属性作为示例。您可以选择从 S3 路径加载 JSON。b) AWS CLI
如此处详细所述,您可以使用标志指定集群创建时的 Hive 配置--configurations
,如下所示:
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
Amazon Elastic MapReduce (EMR) 是一种部署常规 Hadoop 分布的自动化方法。您通常可以针对 Hadoop 和 Hive 运行的命令也可以在 EMR 下运行。
您可以以交互方式(通过登录到主节点)或通过脚本(作为作业“步骤”提交)执行 hive 命令。
您将负责在 Amazon EMR 上安装 TEZ。我发现了这个论坛帖子:EMR 上的 TEZ