使用包含冒号的变量覆盖类型安全配置
Typesafe config override with colon-including variable
我正在使用 Typesafe Config 来管理我的 Flink SQL 命令。例如,
source = """
CREATE TABLE kafka_source (
`body` ROW<`log` ROW<`uid` BIGINT, serverts BIGINT, `contentstr` STRING>>
) WITH (
'connector' = 'kafka',
'topic' = 'data-report-stat-old-logtype7',
'properties.bootstrap.servers' = '10.111.135.233:9092',
'properties.group.id' = 'flink-test2',
'json.fail-on-missing-field' = 'false',
'format' = 'json'
)
"""
我的 properties.bootstrap.servers
是特定于 maven 配置文件的,因此我想在 Maven 中配置它 pom.xml
<profiles>
<profile>
<id>testing</id>
<properties>
<kafka.source.servers>10.111.135.233:9092</kafka.source.servers>
</properties>
</profile>
</profiles>
我想在 Typesafe 配置中引用和使用 属性,
source = """
CREATE TABLE kafka_source (
`body` ROW<`log` ROW<`uid` BIGINT, serverts BIGINT, `contentstr` STRING>>
) WITH (
'connector' = 'kafka',
'topic' = 'data-report-stat-old-logtype7',
'properties.bootstrap.servers' = '"""${kafka.source.servers}"""',
'properties.group.id' = 'flink-test2',
'json.fail-on-missing-field' = 'false',
'format' = 'json'
)
"""
但是,如果我 运行 mvn clean package -Ptesting
,配置内置于
source = """
CREATE TABLE kafka_source (
`body` ROW<`log` ROW<`uid` BIGINT, serverts BIGINT, `contentstr` STRING>>
) WITH (
'connector' = 'kafka',
'topic' = 'data-report-stat-old-logtype7',
'properties.bootstrap.servers' = '"""10.111.135.233:9092"""',
'properties.group.id' = 'flink-test2',
'json.fail-on-missing-field' = 'false',
'format' = 'json'
)
"""
加载配置时抛出异常,因为 10.111.135.233:9092
包含 :
:
Expecting close brace } or a comma, got ':' (if you intended ':' to be part of a key or string value, try enclosing the key or value in double quotes
解决这个问题的正确方法是什么?谢谢!
我认为这是类型安全配置的问题。要解决此问题,请使用 application.properties
文件而不是 application.conf
。
last-n-clicks.generation-ingestion.source=\
CREATE TABLE kafka_source ( \
`body` ROW<`log` ROW<`uid` BIGINT, serverts BIGINT, `contentstr` STRING>> \
) WITH ( \
'connector' = 'kafka', \
'topic' = 'data-report-stat-old-logtype7', \
'properties.bootstrap.servers' = '${kafka.source.servers}', \
'properties.group.id' = 'flink-test2', \
'json.fail-on-missing-field' = 'false', \
'format' = 'json' \
)
我正在使用 Typesafe Config 来管理我的 Flink SQL 命令。例如,
source = """
CREATE TABLE kafka_source (
`body` ROW<`log` ROW<`uid` BIGINT, serverts BIGINT, `contentstr` STRING>>
) WITH (
'connector' = 'kafka',
'topic' = 'data-report-stat-old-logtype7',
'properties.bootstrap.servers' = '10.111.135.233:9092',
'properties.group.id' = 'flink-test2',
'json.fail-on-missing-field' = 'false',
'format' = 'json'
)
"""
我的 properties.bootstrap.servers
是特定于 maven 配置文件的,因此我想在 Maven 中配置它 pom.xml
<profiles>
<profile>
<id>testing</id>
<properties>
<kafka.source.servers>10.111.135.233:9092</kafka.source.servers>
</properties>
</profile>
</profiles>
我想在 Typesafe 配置中引用和使用 属性,
source = """
CREATE TABLE kafka_source (
`body` ROW<`log` ROW<`uid` BIGINT, serverts BIGINT, `contentstr` STRING>>
) WITH (
'connector' = 'kafka',
'topic' = 'data-report-stat-old-logtype7',
'properties.bootstrap.servers' = '"""${kafka.source.servers}"""',
'properties.group.id' = 'flink-test2',
'json.fail-on-missing-field' = 'false',
'format' = 'json'
)
"""
但是,如果我 运行 mvn clean package -Ptesting
,配置内置于
source = """
CREATE TABLE kafka_source (
`body` ROW<`log` ROW<`uid` BIGINT, serverts BIGINT, `contentstr` STRING>>
) WITH (
'connector' = 'kafka',
'topic' = 'data-report-stat-old-logtype7',
'properties.bootstrap.servers' = '"""10.111.135.233:9092"""',
'properties.group.id' = 'flink-test2',
'json.fail-on-missing-field' = 'false',
'format' = 'json'
)
"""
加载配置时抛出异常,因为 10.111.135.233:9092
包含 :
:
Expecting close brace } or a comma, got ':' (if you intended ':' to be part of a key or string value, try enclosing the key or value in double quotes
解决这个问题的正确方法是什么?谢谢!
我认为这是类型安全配置的问题。要解决此问题,请使用 application.properties
文件而不是 application.conf
。
last-n-clicks.generation-ingestion.source=\
CREATE TABLE kafka_source ( \
`body` ROW<`log` ROW<`uid` BIGINT, serverts BIGINT, `contentstr` STRING>> \
) WITH ( \
'connector' = 'kafka', \
'topic' = 'data-report-stat-old-logtype7', \
'properties.bootstrap.servers' = '${kafka.source.servers}', \
'properties.group.id' = 'flink-test2', \
'json.fail-on-missing-field' = 'false', \
'format' = 'json' \
)