为什么flink quickstart scala建议在默认范围中添加连接器依赖项,而flink Hive集成文档则建议相反 连接器依赖项应在默认范围内

为什么flink quickstart scala建议在默认范围中添加连接器依赖项,而flink Hive集成文档则建议相反 连接器依赖项应在默认范围内,hive,apache-flink,flink-sql,Hive,Apache Flink,Flink Sql,这表明: <!-- Add connector dependencies here. They must be in the default scope (compile). --> <!-- Example: <dependency> <groupId>org.apache.flink</groupId> <artifactId>f

这表明:

        <!-- Add connector dependencies here. They must be in the default scope (compile). -->

        <!-- Example:
        <dependency>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-connector-kafka_${scala.binary.version}</artifactId>
            <version>${flink.version}</version>
        </dependency>
        -->


这种差异的原因是,对于配置单元,建议使用各自的配置单元依赖项启动集群。声明最好在启动集群之前将依赖项放入
lib
目录。这样,集群就可以运行使用配置单元的作业。同时,您不必将此依赖项捆绑到用户jar中,这会减小其大小。但是,如果您愿意,不应该有任何东西阻止您将配置单元依赖项与用户代码捆绑在一起。

Hi-Till,我有两个后续问题。(1) 为什么Hive是特殊的,而对于kafka这样的连接器,文档建议只需将kafka连接器依赖项与我的用户代码捆绑在一起?(2) 文档似乎遗漏了“启动集群之前”部分-每当/lib目录更改时,是否总是需要重新启动集群?(1)您可以使用Kafka使用相同的方法。(2) 是的,当您更改
lib
目录内容时,确实需要重新启动集群。我从Flink用户邮件列表中复制Till的回复:“(1)您可以对Kafka做同样的操作,对于Hive,我相信依赖性非常大,如果您将其与用户代码捆绑在一起,它会带来更大的伤害。”对于(2),我相信,如果您在纱线模式下运行Flink,则不需要重新启动。