You need to enable JavaScript to run this app.
文档中心
文档控制台
注册
E-MapReduce

E-MapReduce

复制全文
下载 pdf
提交作业
HiveSQL 作业
复制全文
下载 pdf
HiveSQL 作业

EMR Serverless Hive 支持用户提交 Hive SQL 作业,您可在 EMR Serverless 控制台,完成 Hive SQL 任务提交。开箱即用,无需额外的集群管理。

注意事项

细分

注意事项

语法说明

EMR Serverless Hive 语法 100%兼容开源 Hive 3.1.3 版本。

执行引擎

支持 Hive on MR 和 Hive on Tez 两种执行引擎,默认使用 Tez。您可以通过设置参数进行切换:

-- 使用 mr
set hive.execution.engine=mr;
-- 使用 tez
set hive.execution.engine=tez;

元数据管理

通过独立服务 LAS 提供统一元数据服务和权限管控服务。详细操作请参考:对接 LAS

前提条件
  • 已创建 EMR Serverless 队列,且拥有该队列的 Developer/Admin 权限,操作详情请参见:创建队列队列权限
  • 已创建计算组,当前仅支持使用通用计算组,操作详情请参见创建与管理计算组

提交作业

提交作业:通过控制台

  1. 登录 EMR Serverless 控制台,在左侧导航栏单击 资源管理>Serverless,单击待创建任务的Serverless队列资源,进入队列资源详情页面。
  2. 在队列详情页面的右上角单击SQL编辑器,进入SQL任务编辑页面。
    Image
  3. 在作业编辑页面进行元数据库表选择、资源设置,完成后可在编辑作业区域编辑SQL作业。
    Image
  4. 在作业编辑框中进行 SparkSQL 作业的编辑,编辑完成后,可通过编辑框左下角的格式化按钮,对编辑中的作业进行规范化。
  5. 完成 SQL 作业编辑后,您可以通过控制台右上角的队列计算组来选择计算资源,完成后点击左下角的运行按钮,提交作业。
  6. 作业提交完成后,会弹出提交成功的标识;任务执行成功后,则会为您显示当前查询的结果,并在下方的查询日志中,会显示您本次提交的作业id,以及当前的任务状态,您可进一步在作业管理处查看详细任务情况。

提交作业:通过 Query SDK

使用 Query SDK 提交 HiveSQL 作业的方法可参考 Spark 作业,另需增加 tqs.query.engine.type=hive 参数配置。

Java SDK

详细操作参考:Java Query SDK

import com.volcengine.emr.serverless.SQLTask;
import com.volcengine.emr.serverless.Job;
import com.volcengine.emr.serverless.JobStatus;

String sql = "${your_sql_statement}";  // 待执行的sql
String taskName = "${your_task_name}";  // SQL作业名
String queueName = "${your_queue_name}";  // 需要使用的队列,可选参数,不填将自动选取
SQLTask sqlTask = SQLTask.builder(sql)
  .name(taskName)
  .queue(queueName)
  // 用于传入一些任务参数,注意这里选择引擎类型,默认是SparkSQL
  .addConf("tqs.query.engine.type", "hive")
  .sync(true) // 同步执行直至任务完成
  .build();

// 执行任务
Job job = client.executeSQL(sqlTask);

assertEquals(JobStatus.COMPLETED.status(), job.getStatus());

Python SDK

详细操作参考:Python Query SDK

def execute_sql_task():
    from serverless.client import ServerlessClient
    from serverless.auth import StaticCredentials
    from serverless.task import SQLTask
    from serverless.exceptions import QuerySdkError

    ak = 'xxxx' # 访问密钥AccessKey,可在控制台的“访问控制”>“密钥管理”页面获取
    sk = 'xxxx' # 访问密钥SecretKey,获取方式同AccessKey
    region = 'cn-beijing'
    service = 'emr_serverless'
    endpoint = 'https://emr-serverless.cn-beijing.volcengineapi.com'
    sql = '${CUSTOM_SQL_STATEMENT}'

    client = ServerlessClient(credentials=StaticCredentials(ak, sk), service=service, region=region,endpoint=endpoint)

    try:
        job = client.execute(task=SQLTask(name='sql task', query=sql, conf={'tqs.query.engine.type': 'hive'}), is_sync=True)
        if job.is_success():
            result = job.get_result()
            for record in result:
                print(', '.join([col for col in record]))

    except QuerySdkError as e:
        print(
            "Error in executing sql task. code = %s, error = %s" % (
            e.error_code, e.info))


if __name__ == "__main__":
    execute_sql_task()

提交作业:通过JDBC

EMR Serverless Hive 支持使用 JDBC 来提交作业,您可以使用 Spark 的 JDBC 驱动提交 HiveSQL 作业,还可以与市面上常见的BI软件进行结合。

环境准备

依赖:JDK 1.8
JDBC 下载地址:emr-serverless-spark-jdbc-driver.jar

示例代码

Class.forName("org.volcano.serverless.spark.jdbc.EMRServerlessSparkDriver");
Properties properties = new Properties();
properties.setProperty("user", "Ax");
properties.setProperty("password", "xx");
Connection conn = DriverManager.getConnection("jdbc:emr-serverless-spark://serverless-spark-jdbc.emr.cn-beijing.volces.com:10009/;queue_name=queueName-computeGroup?kyuubi.engine.type=HIVE_SQL&kyuubi.engine.share.level=CONNECTION", properties);
Statement statement = conn.createStatement();
String sql = "select 1";
ResultSet resultSet = statement.executeQuery(sql);
System.out.println(resultSet.getString(1));

JDBC连接串说明

jdbc:emr-serverless-spark://${endpoint}:10009/;queue_name=${queueName}&user=${AccessKey}&password=${SecretKey}?kyuubi.engine.type=HIVE_SQL&kyuubi.engine.share.level=CONNECTION

参数名

说明

endpoint

连接EMR Serverless Spark 的地址,region 地址如下。

  • 华北:serverless-spark-jdbc.emr.cn-beijing.volces.com
  • 华东:serverless-spark-jdbc.emr.cn-shanghai.volces.com
  • 华南:serverless-spark-jdbc.emr.cn-guangzhou.volces.com
  • 柔佛:serverless-spark-jdbc.emr.ap-southeast-1.volces.com

queue_name

连接使用的队列和计算组名称,不填默认使用公共队列。格式:${队列}-${计算组}

user

填写租户的 AccessKey

password

填写租户的 SecretKey

kyuubi.engine.type

指定引擎类型,这里需要指定成 HIVE_SQL,默认是 SparkSQL

kyuubi.engine.share.level

默认使用 connection share level,任务间不共享 hive client(推荐)

查看与诊断作业实例

在作业提交后,您也可以在 作业中心 > 作业实例 页面查看所有已提交的作业运行实例详情,包括运行状态、作业类型、资源详情、提交人等。
Image

  • 您可以在页面顶部通过实践范围、提交人等过滤条件快速筛选出待查看的作业实例,查看作业实例详情。
  • 对于运行失败的作业,您可单击“日志”,查看作业运行详细日志,进行作业失败原因定位;您也可以使用 “AI 诊断” 功能,进行作业智能诊断。
最近更新时间:2026.07.07 19:55:03
这个页面对您有帮助吗?
有用
有用
无用
无用