当前位置: 首页 > 知识库问答 >
问题:

配置单元UDF性能太慢

阎星河
2023-03-14

我在Select query where条件下执行了带有自定义配置单元UDF函数的配置单元SQL脚本,它已经运行了两天多。我想知道这里到底有什么问题?调用java需要很多时间,还是查询执行本身需要很多时间?

我的数据集如下,A表有200万条记录,B表有100万条记录,

共有1个答案

万俟光临
2023-03-14

假设您有权访问UDF,您可以将以下内容添加到函数(sudo代码)中:

long start = System.currentTimeMillis();
MapredContext context = MapredContext.get();
Reporter reporter = context.getReporter();
String group = "instrumentation.udf";
String counter = "customUDF";

// function business logic

long elapsed = System.currentTimeMillis() - start;
reporter.incrCounter(group, counter, elapsed);
 类似资料:
  • 我在Hive有两张桌子。其中一个有大约200万张唱片,另一个有14个唱片。我要把这两张桌子连在一起。我也在WHERE子句中应用UDF。执行联接操作花费了太多时间。 我多次尝试运行该查询,但它运行了大约2个小时,而我的reducer仍然保持在70%,在此之后,我得到异常“java.io.ioException:设备上没有空间”,作业被杀死。 有人能建议我该做些什么来提高绩效吗?

  • 添加/home/cloudera/date.jar到类路径添加资源:/home/cloudera/date.jar 请有人帮帮我,因为我是新来蜂巢的。有人能告诉我要遵循的步骤吗

  • 我看到这样一个udf: https://github.com/edwardcapriolo/hive-geoip 如何在Hive中利用udf?我可以自己创建函数名吗?

  • 我在java中开发了一个工作正常的配置单元udf,我的函数返回输入与配置单元表中列之间的最佳匹配,因此它有以下简化的伪代码: 我的问题是,如果这个函数是由Hive调用的,为什么我需要在代码中连接到Hive?我可以使用使用我的功能的用户所连接的当前连接吗?

  • null 我将把所有三个文件转换成标准格式(文件1格式--一个有4列的输出)。要转换为标准格式,我需要引用文件第一行中的头记录。因此,如果我的输入文件是256MB,并且调用了多个映射器,是否有任何方法使每个映射器可以引用一个全局变量(头信息)。 简而言之,是否有一种方法为所有调用我的配置单元UDF的映射器提供一个公共变量? 注意:UDF将在单个列表上运行,读取完整的行,然后将其写入下一个表HDFS

  • TL;DR:我如何在Hive中更新自定义UDF的jar? 我写了自己的(通用)udf,工作得很好。我可以定义一个新函数,并将其与命令一起使用: null null