【问题标题】:Can not get value while calling get_json_object() in Spark or Hive在 Spark 或 Hive 中调用 get_json_object() 时无法获取值
【发布时间】:2017-08-07 11:29:03
【问题描述】:

json字符串'{"5.1": 1,"s":2}'

通话时

select get_json_object('{"5.1": 1,"s":2}',concat("$.","5.1"))
return NULL

通话时

select get_json_object('{"5.1": 1,"s":2}',concat("$.","s"))
return 2

看来.在 5.1 中使 get_json_object() 无法获取值。

有什么方法可以让 get_json_object() 正常工作吗?

hive document 显示。是 Child 运算符,我可以禁用它吗?

【问题讨论】:

  • 你有没有遇到过在json字符串中使用5.1这样的数字作为key的问题?

标签: json hadoop apache-spark hive


【解决方案1】:

键中不支持.,仅支持a-z,A-Z,0-9,_,-,: 和空格字符

public class UDFJson extends UDF {
  private final Pattern patternKey = Pattern.compile("^([a-zA-Z0-9_\\-\\:\\s]+).*");

  ... 
}  

UDFJson.java

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-07-05
    • 2021-02-25
    • 2018-04-25
    • 2021-09-05
    • 2019-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多