首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >apache的getLogicalType()函数即使存在,也会返回null

apache的getLogicalType()函数即使存在,也会返回null
EN

Stack Overflow用户
提问于 2017-05-05 07:49:35
回答 3查看 610关注 0票数 0

我正在使用apache,并希望从我的模式中获得逻辑类型。我尝试使用函数getLogicalType(),但它返回null。我不明白是怎么回事。我的架构如下。

代码语言:javascript
运行
复制
{
   "namespace": "example.avro",
   "type": "record",
   "name": "User",
   "fields": [
      {"name": "name", "type": "string"},
      {"name": "favorite_number",  "type": "int", "logicalType": "decimal", "precision": 2, "scale": "2"},
      {"name": "favorite_color", "type": ["string", "null"]}
   ] 
 }

下面是我访问logicalType的代码

代码语言:javascript
运行
复制
    for(Schema.Field currField : schema.getFields()) {

       field = createFieldList(currField.name(), currField.schema().getType().toString(), currField.schema().getLogicalType());
       fields.add(field);
   }
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-05-05 13:05:44

伙计们我想我找到答案了。逻辑类型的声明方式是错误的。

而不是

代码语言:javascript
运行
复制
{
  "name": "favorite_number",
  "type": "int",
  "logicalType": "decimal", 
  "precision": 2,
  "scale": "2"
},

它应该是

代码语言:javascript
运行
复制
{
  "name": "favorite_number",
  "type": {
    "type": "int",
    "logicalType": "decimal",
    "precision": 2,
    "scale": "2"
  }
},

现在,当我使用getlogicalType()函数时,它给出了预期的结果

票数 1
EN

Stack Overflow用户

发布于 2017-05-05 07:54:27

您需要使用解析方法,该方法将设置logicalType、这里或logicalType,后者将初始化这里。我对这个库没有经验,但基于代码,我看不到其他方法。

然后,您使用的getLogicalType方法将返回此变量。

票数 0
EN

Stack Overflow用户

发布于 2022-06-14 20:58:27

发生这种情况的另一个原因是当它是一个联合数据类型时。然后,

代码语言:javascript
运行
复制
currField.schema().getType()

变成null,但是你应该去调查

代码语言:javascript
运行
复制
currField.schema().getTypes()

返回类型列表。迭代这些类型,以找到具有逻辑类型详细信息的类型。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43799353

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档