【问题标题】:How to have a custom connector config file be parsed as java properties format?如何将自定义连接器配置文件解析为 java 属性格式?
【发布时间】:2018-09-30 15:13:48
【问题描述】:

我有一个自定义连接器,可以将 Neo4j 命令从文件写入 Kafka,我想对其进行调试。所以,我下载了 Confluent v3.3.0 并花时间熟悉它;但是,我发现自己在尝试加载连接器时遇到了困难。当我尝试使用其 .properties 文件加载连接器时,出现以下错误:

parse error: Invalid string: control characters from U+0000 through U+001F must be escaped at line 1, column 124
parse error: Invalid numeric literal at line 2, column 0

我知道它正在尝试将文件解析为 JSON 文件,就像在此错误之前一样,我在尝试加载连接器时遇到以下错误:

Warning: Install 'jq' to add support for parsing JSON

所以我 brew 安装了 jq,现在一直得到以前的错误。

我希望将此文件解析为 java 属性格式,由于 .properties,我认为该格式是隐含的,但我是否需要在某处的设置中明确说明?

更新:

我按照@Konstantine Karantasis 的建议将 .properties 转换为 JSON,但我得到了与以前相同的错误,但没有第一行:

parse error: Invalid numeric literal at line 2, column 0

我对格式进行了三次检查,并对错误进行了一些搜索,但没有找到。如果我的格式有误,或者在将 JSON 文件与 Kafka Connect 一起使用时是否存在我不关心的细微差别,请告诉我。

Java 属性:

name=neo4k-file-source
connector.class=neo4k.filestream.source.Neo4jFileStreamSourceConnector
tasks.max=1
file=Neo4jCommands.txt
topic=neo4j-commands

转换为 JSON:

[{
  "name": "neo4k-file-source",
  "connector": {
    "class": "neo4k.filestream.source.Neo4jFileStreamSourceConnector"
  },
  "tasks": {
    "max": 1
  },
  "file": "Neo4jCommands.txt",
  "topic": "neo4j-commands"
}]

【问题讨论】:

    标签: neo4j apache-kafka apache-kafka-connect


    【解决方案1】:

    查看https://www.confluent.io/blog/simplest-useful-kafka-connect-data-pipeline-world-thereabouts-part-1/ 以获取使用confluent CLI 加载的有效json 文件的示例

    在你的例子中,试试这个:

    {
        "name": "neo4k-file-source",
        "config": {
            "connector.class": "neo4k.filestream.source.Neo4jFileStreamSourceConnector",
            "tasks.max": 1,
            "file": "Neo4jCommands.txt",
            "topic": "neo4j-commands"
        }
    }
    

    【讨论】:

    • 使用您的 JSON,它已加载。我也会阅读这篇文章,看看是否还有其他东西可以用于我的项目。谢谢!
    【解决方案2】:

    您用于启动连接器的 Confluent CLI 会尝试巧妙地确定属性文件的类型。它不依赖于扩展名 (.properties),而是在输入文件上调用 file 并将结果与​​ ASCII 字符串进行匹配。

    这符合 java 属性文件 (https://en.wikipedia.org/wiki/.properties) 的当前定义,但应扩展以匹配以 UTF-8 编码的文件或包含转义 unicode 字符的文件。

    你有两个选择。

    1. 改为将您的属性转换为 JSON 格式。
    2. 编辑 CLI 以匹配运行 file <yourconf.properties> 时返回的文件类型

    【讨论】:

    • 嘿@Konstantine Karantasis,我尝试了第一个选项,因为我不太知道如何处理第二个选项。我对 CLI 的理解非常基础。不过,在转换为 JSON 后,我收到一个新错误,说我的数字文字无效。我已经三重检查了我的格式并搜索了错误,但结果很短。
    • 你能单独用jq解析你的json吗?
    • 据我所知,是的。只需使用“cat | jq 。”它以稍微不同的格式吐出我的 JSON。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-25
    相关资源
    最近更新 更多