代码之家  ›  专栏  ›  技术社区  ›  xmar

clickhouse/kafka:将json对象类型读入字段

  •  1
  • xmar  · 技术社区  · 7 年前

    我在卡夫卡的一个主题里有这样的数据:

    {..., fields: { "a": "aval", "b": "bval" } }
    

    如果我创建了一个kafka引擎表,那么在使用这样的字段定义时会出现一个错误:

    fields String
    

    因为它(正确地)无法将其识别为字符串:

    2018.07.09 17:09:54.362061 [ 27 ] <Error> void DB::StorageKafka::streamThread(): Code: 26, e.displayText() = DB::Exception: Cannot parse JSON string: expected opening quote: (while read the value of key fields): (at row 1)
    

    因为clickhouse当前没有 Map JSONObject 类型,如果我事先不知道内部字段的名称(示例中为“a”或“b”,因此我看不到嵌套结构的帮助),那么什么是处理它的最佳方法?

    1 回复  |  直到 7 年前
        1
  •  0
  •   xmar    7 年前

    显然,目前clickhouse不支持复杂的json解析。

    从这个 answer 在clickhouse github中:

    clickhouse使用快速而脏的json解析器,它不知道如何读取复杂的深层结构。因此它不能跳过该字段,因为它不知道嵌套结构的结束位置。 对不起的。:。/

    因此,您应该使用一些外部工具对json进行预处理,这样您就可以为clickhouse和改进json解析器做出贡献。

    推荐文章