【问题标题】:Hive Udf, Struct type loses type information. Is there anyway to recover type informationHive Udf,Struct 类型丢失类型信息。无论如何要恢复类型信息
【发布时间】:2017-06-21 13:33:36
【问题描述】:

我的表主要有双类型列和一些字符串列。我使用行格式 serde 'org.openx.data.jsonserde.JsonSerDe' 创建了表格 从文本文件。 我首先使用 named_struct 函数组合这些列并将其传递给我的 udf。像这样的。

select id, my_udf(named_struct("key1", col1, "key2", col2, "key3",col3, "key4", col4), other_udf_param1, other_udf_param2);

所以,col1、col2 和 col3 是 double 类型,而 col4 是 String 类型。

但它们都被转换为字符串。

这是我的评估函数中的一个 sn-p。

List<? extends StructField> fields = this.dataOI.getAllStructFieldRefs();

    for (int i = 0; i < fields.size(); i++) {
        System.out.println(fields.get(i).toString());
        String canName = this.featuresOI.getStructFieldData(arguments[2].get(), fields.get(i)).getClass().getCanonicalName();
        System.out.println(canName + " can name");
        System.out.println(this.dataOI.getStructFieldData(arguments[2].get(), fields.get(i)));
                }

这会将它们全部作为字符串返回。

有没有办法保留列类型?

【问题讨论】:

    标签: java hive udf


    【解决方案1】:

    是的,列类型保留在字段对象检查器中。在 named_struct 的配置单元 cli 上可以观察到相同的行为,但对于 map,输入全部转换为字符串。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-03
      • 2015-06-20
      • 2019-10-25
      • 1970-01-01
      • 1970-01-01
      • 2017-04-07
      • 1970-01-01
      相关资源
      最近更新 更多