目录

hive-中的各种参数,一般在哪里修改

hive 中的各种参数,一般在哪里修改

在实际工作中,Hive 参数的配置和修改可以通过多种方式进行,具体取决于使用场景和需求。以下是常见的参数配置方式和适用场景:


1. 在 Hive CLI 或 Beeline 中临时设置

  • 适用场景
    临时修改参数,仅对当前会话生效。
  • 使用方法
    在 Hive CLI 或 Beeline 中使用 SET 命令。
  • 示例 :

    -- 启用动态分区
    SET hive.exec.dynamic.partition = true;
    
    -- 设置每个 Reducer 处理的数据量
    SET hive.exec.reducers.bytes.per.reducer = 256000000;
    
    -- 启用 Map 端聚合
    SET hive.map.aggr = true;
  • 特点 :

    • 修改仅对当前会话有效,退出会话后失效。
    • 适合临时调试或测试。

2. 在 Hive 脚本中设置

  • 适用场景
    在脚本中定义参数,适用于批量任务。
  • 使用方法
    在 Hive 脚本的开头使用 SET 命令。
  • 示例 :

    -- script.hql
    SET hive.exec.dynamic.partition = true;
    SET hive.exec.dynamic.partition.mode = nonstrict;
    
    INSERT OVERWRITE TABLE target_table PARTITION (dt)
    SELECT id, name, dt FROM source_table;
  • 特点 :

    • 参数设置与脚本逻辑绑定,适合自动化任务。
    • 修改仅对当前脚本生效。

3. 在 Hive 配置文件(hive-site.xml)中设置

  • 适用场景
    全局修改参数,对所有会话生效。
  • 使用方法
    修改 Hive 的配置文件 hive-site.xml
  • 示例 :

    <configuration>
        <property>
            <name>hive.exec.dynamic.partition</name>
            <value>true</value>
        </property>
        <property>
            <name>hive.exec.dynamic.partition.mode</name>
            <value>nonstrict</value>
        </property>
        <property>
            <name>hive.map.aggr</name>
            <value>true</value>
        </property>
    </configuration>
  • 特点 :

    • 修改对所有会话和任务生效。
    • 需要重启 Hive 服务使配置生效。
    • 适合集群管理员全局配置。

4. 在 Hadoop 配置文件(hadoop-site.xml)中设置

  • 适用场景
    修改与 Hadoop 相关的参数,例如资源管理、压缩等。
  • 使用方法
    修改 Hadoop 的配置文件 hadoop-site.xmlcore-site.xml
  • 示例 :

    <configuration>
        <property>
            <name>mapreduce.map.memory.mb</name>
            <value>4096</value>
        </property>
        <property>
            <name>mapreduce.reduce.memory.mb</name>
            <value>8192</value>
        </property>
    </configuration>
  • 特点 :

    • 修改对所有 Hadoop 任务生效。
    • 需要重启 Hadoop 服务使配置生效。
    • 适合集群管理员全局配置。

5. 在命令行中传递参数

  • 适用场景
    在提交任务时动态设置参数。
  • 使用方法
    使用 hivebeeline 命令时通过 -hiveconf 选项传递参数。
  • 示例 :

    hive -hiveconf hive.exec.dynamic.partition=true -hiveconf hive.exec.dynamic.partition.mode=nonstrict -f script.hql
  • 特点 :

    • 参数仅对当前任务生效。
    • 适合在脚本或自动化任务中动态配置。

6. 在调度工具中设置

  • 适用场景
    在使用调度工具(如 Apache Oozie、Airflow)时配置参数。
  • 使用方法
    在调度工具的配置文件中设置 Hive 参数。
  • 示例 (Oozie):

    <action name="hive-action">
        <hive xmlns="uri:oozie:hive-action:0.5">
            <job-tracker>${jobTracker}</job-tracker>
            <name-node>${nameNode}</name-node>
            <configuration>
                <property>
                    <name>hive.exec.dynamic.partition</name>
                    <value>true</value>
                </property>
                <property>
                    <name>hive.exec.dynamic.partition.mode</name>
                    <value>nonstrict</value>
                </property>
            </configuration>
            <script>script.hql</script>
        </hive>
    </action>
  • 特点 :

    • 参数与调度任务绑定,适合自动化工作流。

7. 在 HiveServer2 中设置

  • 适用场景
    在使用 JDBC/ODBC 连接 HiveServer2 时配置参数。
  • 使用方法
    在连接字符串或客户端中设置参数。
  • 示例 (Beeline):

    beeline -u jdbc:hive2://localhost:10000 -n username -p password --hiveconf hive.exec.dynamic.partition=true
  • 特点 :

    • 参数仅对当前连接会话生效。
    • 适合通过 JDBC/ODBC 连接时动态配置。

总结

Hive 参数的配置方式多样,具体选择取决于使用场景:

  • 临时调试
    在 Hive CLI 或 Beeline 中使用 SET 命令。
  • 脚本任务
    在 Hive 脚本中设置参数。
  • 全局配置
    修改 hive-site.xmlhadoop-site.xml
  • 动态任务
    在命令行或调度工具中传递参数。

根据实际需求选择合适的配置方式,可以有效提升 Hive 的性能和灵活性。