Integrasi Apache Spark dengan Kafka
Sep 25 2020
Saya mengikuti kursus di Udemy tentang Kafka dan Spark dan saya sedang mempelajari integrasi apache spark dengan Kafka
Di bawah ini adalah kode apache spark
SparkSession session = SparkSession.builder().appName("KafkaConsumer").master("local[*]").getOrCreate();
session.sparkContext().setLogLevel("ERROR");
Dataset<Row> df = session
.readStream()
.format("kafka")
.option("kafka.bootstrap.servers", "localhost:9092")
.option("subscribe", "second_topic").load();
df.show();
Dan di bawah ini adalah isi dari file pom.xml tersebut
<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.example.kafka.spark</groupId>
<artifactId>Kafka-Spark-Integration-Code</artifactId>
<version>0.0.1-SNAPSHOT</version>
<dependencies>
<!-- https://mvnrepository.com/artifact/org.apache.spark/spark-core -->
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.12</artifactId>
<version>3.0.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.spark/spark-sql -->
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-sql_2.12</artifactId>
<version>3.0.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.spark/spark-streaming -->
<!-- <dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-streaming_2.12</artifactId>
<version>3.0.0</version>
</dependency> -->
<!-- https://mvnrepository.com/artifact/org.apache.spark/spark-sql-kafka-0-10 -->
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-sql-kafka-0-10_2.12</artifactId>
<version>3.0.0</version>
</dependency>
</dependencies>
</project>
Namun ketika saya menjalankan kode saya mendapatkan kesalahan di bawah ini yang tidak dapat saya selesaikan. Saya menggunakan openjdk 8 dan spark 3 di MX Linux. Terima kasih
exception in thread "main" java.lang.ClassFormatError: Invalid code attribute name index 24977 in class file org/apache/spark/sql/execution/columnar/InMemoryRelation
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:756)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:468)
at java.net.URLClassLoader.access$100(URLClassLoader.java:74) at java.net.URLClassLoader$1.run(URLClassLoader.java:369)
at java.net.URLClassLoader$1.run(URLClassLoader.java:363) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:362) at java.lang.ClassLoader.loadClass(ClassLoader.java:418) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:352)
at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
at org.apache.spark.sql.internal.SharedState.<init>(SharedState.scala:83)
at org.apache.spark.sql.SparkSession.$anonfun$sharedState$1(SparkSession.scala:132) at scala.Option.getOrElse(Option.scala:189) at org.apache.spark.sql.SparkSession.sharedState$lzycompute(SparkSession.scala:132)
at org.apache.spark.sql.SparkSession.sharedState(SparkSession.scala:131)
at org.apache.spark.sql.internal.BaseSessionStateBuilder.build(BaseSessionStateBuilder.scala:323)
at org.apache.spark.sql.SparkSession$.org$apache$spark$sql$SparkSession$$instantiateSessionState(SparkSession.scala:1107)
at org.apache.spark.sql.SparkSession.$anonfun$sessionState$2(SparkSession.scala:157) at scala.Option.getOrElse(Option.scala:189) at org.apache.spark.sql.SparkSession.sessionState$lzycompute(SparkSession.scala:155)
at org.apache.spark.sql.SparkSession.sessionState(SparkSession.scala:152)
at org.apache.spark.sql.streaming.DataStreamReader.<init>(DataStreamReader.scala:519)
at org.apache.spark.sql.SparkSession.readStream(SparkSession.scala:657)
at example.code.spark.kafka.KafkaSparkConsumer.main(KafkaSparkConsumer.java:19)
Jawaban
2 mike Sep 25 2020 at 12:16
Anda dapat mengikuti contoh yang diberikan dalam Streaming Terstruktur + Panduan Integrasi Kafka :
SparkSession session = SparkSession.builder()
.appName("KafkaConsumer")
.master("local[*]")
.getOrCreate();
Dataset<Row> df = spark
.readStream()
.format("kafka")
.option("kafka.bootstrap.servers", "localhost:9092")
.option("subscribe", "second_topic")
.load()
.selectExpr("CAST(key AS STRING)", "CAST(value AS STRING)");
untuk mengkonsumsi data. The Terstruktur Streaming Panduan Pemrograman menunjukkan Anda bagaimana untuk mencetak data ke konsol:
StreamingQuery query = df
.writeStream()
.format("console")
.outputMode("append")
.option("checkpointLocation", "path/to/checkpoint/dir")
.start();
query.awaitTermination();
Kiat Pemilik Anjing yang Bermanfaat: Mengapa Penting untuk Membiarkan Anjing Anda Mengendus di Jalan
Jana Duggar: Semua yang Dia Katakan Tentang Cinta dan Jendela 5 Tahunnya untuk Menemukan 'Yang Satu'