Hive--参数优化

一、Map阶段的优化(Mapphase)

1. Map数的计算公式为:
num_Map_tasks=max[${Mapred.min.spilt.size},min(${dfs.block.size},${Mapred.max.split.size})]

Mapred.min.spilt.size指的是数据的最小分割单元大小(默认为1B)

Mapred.max.split.size指的是数据的最大分割单元大小(默认为256MB)

dfs.block.size指的是HDFS设置的数据块大小(这个值是在配置文件中定好的,而且Hive是获取不到的)

所以Map的数量是由Mapred.min.spilt.size、Mapred.max.split.size这两个参数的最大值决定的。如果不做修改的话一个Map Task处理256MB的数据,增大Mapred.max.split.size的值可以减少Map的数量,减少Mapred.max.split.size的值可以增大Map的数量。但是直接修改Mapred.Map.tasks是没有效果的。如果运行速度较慢,可以考虑增加Map的数量,增加并行度,如果运行速度较快,增加Map数量不太可能加快速度,反而有可能因为初始化Map使速度变慢,此时可以考虑减少Map,这样可以节省更多资源给其他Job

二、Reduce阶段的优化(Reudcephase)

1. reduce数的计算公式为:
num_Reduce_tasks=
mi

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Hive是一种基于Hadoop的数据仓库工具,可以利用Hive语言进行数据查询和分析。而"-e"选项是Hive命令行工具中的一个参数,用于指定需要执行的Hive查询语句。 通过使用"hive -e"命令,我们可以在命令行中直接执行Hive查询语句,而不需要进入Hive Shell环境。这个参数通常与其他参数一起使用,以提供执行查询所需的资源信息。 可以通过在"hive -e"后面跟着一条Hive查询语句来执行特定的查询。例如,我们可以使用以下命令执行查询: hive -e "SELECT * FROM my_table;" 在这个例子中,我们使用了-hive -e参数,并将查询语句"SELECT * FROM my_table;"作为参数传递给它。这样,Hive命令行工具将执行这个查询,并将结果显示在命令行中。 此外,"-e"参数还可以与其他参数一起使用,以提供执行查询所需的其他资源信息。例如,可以使用以下命令指定执行查询所需的资源队列: hive -e "SELECT * FROM my_table;" -hiveconf mapred.job.queue.name=my_queue 在这个例子中,我们使用"-hiveconf"参数指定了一个名为"mapred.job.queue.name"的Hive配置参数,并将其值设置为"my_queue"。这将告诉Hive在执行查询时使用指定的资源队列。 总结来说,"-e"选项是Hive命令行工具中的一个参数,用于在命令行中执行Hive查询语句。它可以与其他参数一起使用,以指定执行查询所需的资源信息。 ### 回答2: 在Hive中,-e资源参数用于指定一个包含Hive查询的文件,并在Hive的命令行模式下执行这个查询。这个参数通常与-hiveconf参数一起使用。 使用-hiveconf参数可以设置Hive配置参数,例如设置Hive的数据仓库位置、Hive的日志级别、Hive执行引擎等。而使用-e参数可以直接传递一条Hive查询语句,这条查询语句可以是一个在文件中定义的查询语句。当在命令行输入"hive -e [查询语句文件路径]"时,Hive会读取该文件中的查询语句,并将其作为Hive的输入,执行相应的查询。 使用-e参数的好处是可以批量执行多个查询语句,而不需要每次都手动输入查询语句,提高了工作效率。另外,使用-e参数还可以将Hive查询与其他Shell命令结合起来,实现一些复杂的任务。 然而,使用-e参数也存在一些限制。首先,输入的查询语句必须放在一个文件中,并且该文件的路径必须正确指定。其次,查询语句文件中的查询语句必须是经过验证的,不会出现语法错误,否则整个执行过程可能会被中断。最后,由于-e参数是执行一次性的查询,因此它适合于一些简单、独立的查询任务,而对于复杂的查询任务,建议使用Hive的交互模式进行逐条输入和调试。 ### 回答3: 在Hive中,可以使用“-e”选项来指定Hive查询语句的执行方式和资源参数。该选项后面可以跟随一个包含Hive查询语句的字符串,并且可以在字符串中设置一些资源参数。 资源参数Hive中用于控制查询任务的资源分配,如CPU核数、内存大小等。通过设置资源参数,可以优化查询的执行性能,提高查询的效率。 常用的资源参数包括以下几个: 1. hive.server2.tez.default.queues:用于指定查询任务所使用的队列。可以根据不同的业务需求将查询任务分配到不同的队列中,以实现资源隔离和优先级控制。 2. tez.queue.name:指定任务运行时使用的队列名称。可以根据不同的场景和需求将任务分配到不同的队列中,以实现资源分配的灵活控制。 3. mapreduce.job.queuename:用于指定MapReduce作业运行时使用的队列。类似于前面的队列参数设置,可以将作业分配到不同的队列中以实现资源隔离。 4. hive.map.aggr:用于指定Map阶段是否使用聚合操作。当设置为true时,会在Map阶段进行聚合操作,可以减少数据量,提高执行效率。 5. hive.optimize.skewjoin:用于指定是否启用倾斜连接优化。当设置为true时,Hive会自动检测倾斜连接点,并对其进行优化,减少倾斜连接对整体性能的影响。 通过在Hive命令行中使用“-e”选项,可以方便地指定资源参数并执行Hive查询语句,以便更好地控制查询任务的执行方式和资源分配,提高查询性能和效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值