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

配置UDF以从不使用外部查询的分布式缓存中获取值

颜修真
2023-03-14

我们已经用Java编写了一个配置单元UDF来从添加到分布式缓存中的文件中获取值,该文件在选择查询中非常有效,如下所示:

查询1。

select country_key, MyFunction(country_key,"/data/MyData.txt") as capital from tablename;
 create table new_table 
    as 
    select country_key, MyFunction(country_key,"/data/MyData.txt") as capital from tablename;
select t.capital from 
(
select country_key, MyFunction(country_key,"/data/MyData.txt") as capital from tablename
) t;
public class CountryMap extends UDF{

    Map<Integer, String> countryMap =  null;

    public String evaluate(Integer keyCol, String mapFile) {


        if (countryMap == null){
            //read comma delimited data from mapFile and build a hashmap
                countryMap.put(key, value);
            }

        if (countryMap.containsKey(keyCol)) {
                return countryMap.get(keyCol);
            }
        return "NA";
    }
}
ADD JAR /data/CountryMap-with-dependencies.jar;
ADD FILE /data/MyData.txt;
CREATE TEMPORARY FUNCTION MyFunction as 'CountryMap';

共有1个答案

舒阳州
2023-03-14

你使用什么版本的Hive?在0.14.0之前,您必须设置hive.cache.expr.evaluation=false;来绕过bug。

 类似资料:
  • 我在启用了本地模式集群(由2个服务器组成)中的每个节点上都有名为“igniteCache”的Ignite缓存。一定数量的条目被加载到这些本地缓存中。现在,我已经启动了单独的客户机节点,它从集群上的“igniteCache”查询数据。但当我查询数据时,总是得到空结果(而不是从两个服务器节点获取数据)

  • 我已经将Hazelcast缓存配置为Spring Boot应用程序中的分布式缓存。 我想要为同一实例提供本地缓存,其中很少缓存不应共享。 如何在应用中一起做本地和分布式缓存?

  • 问题内容: 我需要获取网络中主机的MAC ID。为此,如果我ping通该IP并查询ARP缓存,则可以获取MAC ID。我只是想知道是否可以获取任何API来查询ARP并获取MAC ID。 另外,如果有更好的方法可以从IP地址获取MAC ID,请提出建议。 PS:我在JAVA工作。 谢谢。 问题答案: Java没有提供直接的方法来查询网络中主机的MAC地址,因为Java的套接字库已将其抽象出来。 从某

  • Web 应用程序可能需要为成百上千甚至更多的用户同时提供服务。如果你没有采取必要的措施,在这种负载下,你的网站可能会崩溃或变得没有响应。 假设在主页显示最后 10 条新闻,并且平均每分钟有上千名用户访问此页面。你可能为每个用户通过查询数据库来显示页面视图信息: SELECT TOP 10 Title, NewsDate, Subject, Body FROM News ORDER BY NewsD

  • 我目前使用的是apache ignite 2.3.0和java API。我有一个具有两个节点和两个不同缓存的数据网格。一个是本地的,另一个是分区的。 假设我的本地缓存位于节点#1上。 谢谢

  • 问题内容: 我正在寻找Java分布式缓存解决方案。我们希望功能喜欢: 我们已经分析了Terracotta这样的框架,它似乎是缓存框架中我们想要的一切……但是,似乎需要一个中央缓存节点,这成为我们的单点故障。 除了推出我们自己的解决方案之外,还有其他想法吗? 问题答案: 我建议使用JBossCache或EhCache(使用分布式缓存侦听器)。我都用过,我都喜欢,它们都适合您的要求。