Hey,
Why do you have these dependencies in your pom?
<!-- https://mvnrepository.com/artifact/org.apache.kafka/kafka-clients
-->
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka-clients</artifactId>
<version>2.8.0</version>
</dependency>
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka_2.12</artifactId>
<version>2.8.0</version>
</dependency>
They are not needed for using the Kafka connector of Flink (the flink kafka
connector dependencies pulls the required dependencies)
On Thu, Sep 9, 2021 at 12:02 PM Harshvardhan Shinde <
[email protected]> wrote:
> Hi,
>
> I'm trying a simple flink job that reads data from a kafka topic and
> creates a Hive table.
>
> I'm following the steps from here
> <https://ci.apache.org/projects/flink/flink-docs-release-1.13/docs/connectors/table/hive/overview/#connecting-to-hive>
> .
>
> Here's my code:
>
> import org.apache.flink.table.api.EnvironmentSettings;
> import org.apache.flink.table.api.Table;
> import org.apache.flink.table.api.TableEnvironment;
> import org.apache.flink.table.catalog.hive.HiveCatalog;
>
> EnvironmentSettings settings =
> EnvironmentSettings.newInstance().useBlinkPlanner().inStreamingMode().build();
> TableEnvironment tableEnv = TableEnvironment.create(settings);
>
> String name = "myhive";
> String defaultDatabase = "harsh_test";
> String hiveConfDir = "/etc/hive/conf";
>
> HiveCatalog hive = new HiveCatalog(name, defaultDatabase, hiveConfDir);
> tableEnv.registerCatalog(name, hive);
>
> // set the HiveCatalog as the current catalog of the session
> tableEnv.useCatalog(name);
>
> tableEnv.executeSql("CREATE TABLE IF NOT EXISTS transactions (\n" +
> " `created_at` TIMESTAMP(3) METADATA FROM 'timestamp',\n" +
> " `partition` BIGINT METADATA VIRTUAL,\n" +
> " `offset` BIGINT METADATA VIRTUAL,\n" +
> " account_id BIGINT,\n" +
> " amount BIGINT,\n" +
> " transaction_time TIMESTAMP(3),\n" +
> " WATERMARK FOR transaction_time AS transaction_time - INTERVAL '5'
> SECOND\n" +
> ") WITH (\n" +
> " 'connector' = 'kafka',\n" +
> " 'topic' = 'flink-stream-table',\n" +
> " 'properties.bootstrap.servers' = '<BROKER_ADDRESS>:9092',\n" +
> " 'scan.startup.mode' = 'earliest-offset',\n" +
> " 'format' = 'csv'\n" +
> ")");
>
> Table table = tableEnv.sqlQuery("Select * from transactions");
> table.execute().print();
>
> The code builds successfully, but I'm getting the following runtime error:
>
> Caused by: java.util.concurrent.CompletionException:
> java.lang.NoClassDefFoundError:
> org/apache/kafka/common/serialization/ByteArrayDeserializer at
> java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:273)
> at
> java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:280)
> at
> java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1606)
> ..
>
> Here are my pom.xml file contents:
>
> <!--
> Licensed to the Apache Software Foundation (ASF) under one
> or more contributor license agreements. See the NOTICE file
> distributed with this work for additional information
> regarding copyright ownership. The ASF licenses this file
> to you under the Apache License, Version 2.0 (the
> "License"); you may not use this file except in compliance
> with the License. You may obtain a copy of the License at
>
> http://www.apache.org/licenses/LICENSE-2.0
>
> Unless required by applicable law or agreed to in writing,
> software distributed under the License is distributed on an
> "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
> KIND, either express or implied. See the License for the
> specific language governing permissions and limitations
> under the License.
> -->
> <project xmlns="http://maven.apache.org/POM/4.0.0"
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
> http://maven.apache.org/xsd/maven-4.0.0.xsd">
> <modelVersion>4.0.0</modelVersion>
>
> <groupId>com.harsh.test</groupId>
> <artifactId>harsh-flink-test</artifactId>
> <version>1.0-SNAPSHOT</version>
> <packaging>jar</packaging>
>
> <name>Flink Quickstart Job</name>
> <url>http://www.myorganization.org</url>
>
> <properties>
> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
> <flink.version>1.13.2</flink.version>
> <java.version>1.8</java.version>
> <hive.version>2.3.6</hive.version>
> <scala.binary.version>2.12</scala.binary.version>
> <maven.compiler.source>${java.version}</maven.compiler.source>
> <maven.compiler.target>${java.version}</maven.compiler.target>
> </properties>
>
> <repositories>
> <repository>
> <id>apache.snapshots</id>
> <name>Apache Development Snapshot Repository</name>
>
> <url>https://repository.apache.org/content/repositories/snapshots/</url>
> <releases>
> <enabled>false</enabled>
> </releases>
> <snapshots>
> <enabled>true</enabled>
> </snapshots>
> </repository>
> </repositories>
>
> <dependencies>
> <!-- Apache Flink dependencies -->
> <!-- These dependencies are provided, because they should not be
> packaged into the JAR file. -->
> <dependency>
> <groupId>org.apache.flink</groupId>
> <artifactId>flink-java</artifactId>
> <version>${flink.version}</version>
> </dependency>
> <dependency>
> <groupId>org.apache.flink</groupId>
>
> <artifactId>flink-streaming-java_${scala.binary.version}</artifactId>
> <version>${flink.version}</version>
> </dependency>
>
> <!-- Add connector dependencies here. They must be in the default
> scope (compile). -->
>
> <!-- Example:
>
> <dependency>
> <groupId>org.apache.flink</groupId>
>
> <artifactId>flink-connector-kafka-0.10_${scala.binary.version}</artifactId>
> <version>${flink.version}</version>
> </dependency>
> -->
>
> <!--
> https://mvnrepository.com/artifact/org.apache.flink/flink-connector-kafka -->
> <dependency>
> <groupId>org.apache.flink</groupId>
>
> <artifactId>flink-connector-kafka_${scala.binary.version}</artifactId>
> <version>${flink.version}</version>
> </dependency>
>
> <dependency>
> <groupId>org.apache.flink</groupId>
>
> <artifactId>flink-table-api-java-bridge_${scala.binary.version}</artifactId>
> <version>${flink.version}</version>
> </dependency>
>
> <dependency>
> <groupId>org.apache.flink</groupId>
>
> <artifactId>flink-table-planner-blink_${scala.binary.version}</artifactId>
> <version>${flink.version}</version>
> </dependency>
>
> <!--
> https://mvnrepository.com/artifact/org.apache.flink/flink-table-planner -->
> <dependency>
> <groupId>org.apache.flink</groupId>
> <artifactId>flink-table-planner_2.12</artifactId>
> <version>1.13.2</version>
> </dependency>
>
>
> <!-- Flink Dependency -->
> <dependency>
> <groupId>org.apache.flink</groupId>
>
> <artifactId>flink-connector-hive_${scala.binary.version}</artifactId>
> <version>${flink.version}</version>
> </dependency>
>
> <!-- Hive Dependency -->
> <dependency>
> <groupId>org.apache.hive</groupId>
> <artifactId>hive-exec</artifactId>
> <version>${hive.version}</version>
> </dependency>
>
> <!--
> https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
> <dependency>
> <groupId>javax.servlet</groupId>
> <artifactId>javax.servlet-api</artifactId>
> <version>3.1.0</version>
> <scope>provided</scope>
> </dependency>
>
> <!--
> https://mvnrepository.com/artifact/org.apache.htrace/htrace-core4 -->
> <dependency>
> <groupId>org.apache.htrace</groupId>
> <artifactId>htrace-core4</artifactId>
> <version>4.0.1-incubating</version>
> </dependency>
>
> <!--
> https://mvnrepository.com/artifact/commons-configuration/commons-configuration
> -->
> <dependency>
> <groupId>commons-configuration</groupId>
> <artifactId>commons-configuration</artifactId>
> <version>1.10</version>
> </dependency>
>
> <!--
> https://mvnrepository.com/artifact/commons-logging/commons-logging -->
> <dependency>
> <groupId>commons-logging</groupId>
> <artifactId>commons-logging</artifactId>
> <version>1.2</version>
> </dependency>
>
> <!--
> https://mvnrepository.com/artifact/org.apache.flink/flink-shaded-hadoop-2 -->
> <dependency>
> <groupId>org.apache.flink</groupId>
> <artifactId>flink-shaded-hadoop-2</artifactId>
> <version>2.8.3-10.0</version>
> </dependency>
>
>
> <!--
> https://mvnrepository.com/artifact/org.apache.flink/flink-hadoop-compatibility
> -->
> <dependency>
> <groupId>org.apache.flink</groupId>
> <artifactId>flink-hadoop-compatibility_2.12</artifactId>
> <version>1.13.2</version>
> </dependency>
>
> <!--
> https://mvnrepository.com/artifact/org.apache.flink/flink-hadoop-fs -->
> <dependency>
> <groupId>org.apache.flink</groupId>
> <artifactId>flink-hadoop-fs</artifactId>
> <version>1.13.2</version>
> </dependency>
>
> <!-- https://mvnrepository.com/artifact/org.apache.flink/flink-csv -->
> <dependency>
> <groupId>org.apache.flink</groupId>
> <artifactId>flink-csv</artifactId>
> <version>1.13.2</version>
> </dependency>
>
> <!-- https://mvnrepository.com/artifact/org.apache.flink/flink-json
> -->
> <dependency>
> <groupId>org.apache.flink</groupId>
> <artifactId>flink-json</artifactId>
> <version>1.13.2</version>
> </dependency>
>
> <!--
> https://mvnrepository.com/artifact/org.apache.flink/flink-sql-connector-hive-1.2.2
> -->
> <dependency>
> <groupId>org.apache.flink</groupId>
> <artifactId>flink-sql-connector-hive-2.3.6_2.12</artifactId>
> <version>1.13.2</version>
> </dependency>
>
> <!-- https://mvnrepository.com/artifact/org.apache.flink/flink-core
> -->
> <dependency>
> <groupId>org.apache.flink</groupId>
> <artifactId>flink-core</artifactId>
> <version>1.13.2</version>
> </dependency>
>
> <!--
> https://mvnrepository.com/artifact/org.apache.kafka/kafka-clients -->
> <dependency>
> <groupId>org.apache.kafka</groupId>
> <artifactId>kafka-clients</artifactId>
> <version>2.8.0</version>
> </dependency>
>
> <dependency>
> <groupId>org.apache.kafka</groupId>
> <artifactId>kafka_2.12</artifactId>
> <version>2.8.0</version>
> </dependency>
>
>
> <!-- Add logging framework, to produce console output when running in
> the IDE. -->
> <!-- These dependencies are excluded from the application JAR by
> default. -->
> <dependency>
> <groupId>org.slf4j</groupId>
> <artifactId>slf4j-log4j12</artifactId>
> <version>1.7.7</version>
> <scope>runtime</scope>
> </dependency>
> <dependency>
> <groupId>log4j</groupId>
> <artifactId>log4j</artifactId>
> <version>1.2.17</version>
> <scope>runtime</scope>
> </dependency>
> </dependencies>
>
> <build>
> <plugins>
>
> <!-- Java Compiler -->
> <plugin>
> <groupId>org.apache.maven.plugins</groupId>
> <artifactId>maven-compiler-plugin</artifactId>
> <version>3.1</version>
> <configuration>
> <source>${java.version}</source>
> <target>${java.version}</target>
> </configuration>
> </plugin>
>
> <!-- We use the maven-shade plugin to create a fat jar that
> contains all necessary dependencies. -->
> <!-- Change the value of <mainClass>...</mainClass> if your
> program entry point changes. -->
> <plugin>
> <groupId>org.apache.maven.plugins</groupId>
> <artifactId>maven-shade-plugin</artifactId>
> <version>3.0.0</version>
> <executions>
> <!-- Run shade goal on package phase -->
> <execution>
> <phase>package</phase>
> <goals>
> <goal>shade</goal>
> </goals>
> <configuration>
> <artifactSet>
> <excludes>
>
> <exclude>org.apache.flink:force-shading</exclude>
>
> <exclude>com.google.code.findbugs:jsr305</exclude>
> <exclude>org.slf4j:*</exclude>
> <exclude>log4j:*</exclude>
> </excludes>
> </artifactSet>
> <filters>
> <filter>
> <!-- Do not copy the signatures in the
> META-INF folder.
> Otherwise, this might cause
> SecurityExceptions when using the JAR. -->
> <artifact>*:*</artifact>
> <excludes>
> <exclude>META-INF/*.SF</exclude>
> <exclude>META-INF/*.DSA</exclude>
> <exclude>META-INF/*.RSA</exclude>
> </excludes>
> </filter>
> </filters>
> <transformers>
> <transformer
> implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
>
> <mainClass>com.harsh.test.StreamingJob</mainClass>
> </transformer>
> </transformers>
> </configuration>
> </execution>
> </executions>
> </plugin>
> </plugins>
>
> <pluginManagement>
> <plugins>
>
> <!-- This improves the out-of-the-box experience in Eclipse
> by resolving some warnings. -->
> <plugin>
> <groupId>org.eclipse.m2e</groupId>
> <artifactId>lifecycle-mapping</artifactId>
> <version>1.0.0</version>
> <configuration>
> <lifecycleMappingMetadata>
> <pluginExecutions>
> <pluginExecution>
> <pluginExecutionFilter>
>
> <groupId>org.apache.maven.plugins</groupId>
>
> <artifactId>maven-shade-plugin</artifactId>
> <versionRange>[3.0.0,)</versionRange>
> <goals>
> <goal>shade</goal>
> </goals>
> </pluginExecutionFilter>
> <action>
> <ignore/>
> </action>
> </pluginExecution>
> <pluginExecution>
> <pluginExecutionFilter>
>
> <groupId>org.apache.maven.plugins</groupId>
>
> <artifactId>maven-compiler-plugin</artifactId>
> <versionRange>[3.1,)</versionRange>
> <goals>
> <goal>testCompile</goal>
> <goal>compile</goal>
> </goals>
> </pluginExecutionFilter>
> <action>
> <ignore/>
> </action>
> </pluginExecution>
> </pluginExecutions>
> </lifecycleMappingMetadata>
> </configuration>
> </plugin>
> </plugins>
> </pluginManagement>
> </build>
>
> <!-- This profile helps to make things run out of the box in IntelliJ -->
> <!-- Its adds Flink's core classes to the runtime class path. -->
> <!-- Otherwise they are missing in IntelliJ, because the dependency is
> 'provided' -->
> <profiles>
> <profile>
> <id>add-dependencies-for-IDEA</id>
>
> <activation>
> <property>
> <name>idea.version</name>
> </property>
> </activation>
>
> <dependencies>
> <dependency>
> <groupId>org.apache.flink</groupId>
> <artifactId>flink-java</artifactId>
> <version>${flink.version}</version>
> <scope>compile</scope>
> </dependency>
> <dependency>
> <groupId>org.apache.flink</groupId>
>
> <artifactId>flink-streaming-java_${scala.binary.version}</artifactId>
> <version>${flink.version}</version>
> <scope>compile</scope>
> </dependency>
> </dependencies>
> </profile>
> </profiles>
>
> </project>
>
>
> Please help me resolve the issue.
>
> Thanks
>
>
>
>