본문 바로가기
빅데이터/spark

[spark] AWS EMR에서 Caused by: java.lang.ClassNotFoundException: org.apache.kafka.common.serialization.ByteArrayDeserializer 오류 발생시 해결 방법

by hs_seo 2019. 10. 14.

AWS-EMR 에서 카프카와 스파크를 연동할 때 다음의 오류가 발생하면 kafka-client jar 파일을 추가해 주면 됩니다.

scala> val query = df.writeStream.outputMode("append").format("console").start()
java.lang.NoClassDefFoundError: org/apache/kafka/common/serialization/ByteArrayDeserializer
  at org.apache.spark.sql.kafka010.KafkaSourceProvider.createSource(KafkaSourceProvider.scala:74)
  at org.apache.spark.sql.execution.datasources.DataSource.createSource(DataSource.scala:264)
  at org.apache.spark.sql.streaming.StreamingQueryManager$$anonfun$1.applyOrElse(StreamingQueryManager.scala:245)
  at org.apache.spark.sql.streaming.StreamingQueryManager$$anonfun$1.applyOrElse(StreamingQueryManager.scala:241)
  at org.apache.spark.sql.catalyst.trees.TreeNode$$anonfun$3.apply(TreeNode.scala:286)
  at org.apache.spark.sql.catalyst.trees.TreeNode$$anonfun$3.apply(TreeNode.scala:286)
  at org.apache.spark.sql.catalyst.trees.CurrentOrigin$.withOrigin(TreeNode.scala:69)
  at org.apache.spark.sql.catalyst.trees.TreeNode.transformDown(TreeNode.scala:285)
  at org.apache.spark.sql.catalyst.trees.TreeNode.transform(TreeNode.scala:275)
  at org.apache.spark.sql.streaming.StreamingQueryManager.startQuery(StreamingQueryManager.scala:241)
  at org.apache.spark.sql.streaming.DataStreamWriter.start(DataStreamWriter.scala:260)
  ... 48 elided
Caused by: java.lang.ClassNotFoundException: org.apache.kafka.common.serialization.ByteArrayDeserializer
  at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
  at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
  at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
  ... 59 more

 

해결방법

kafka-clients.jar 파일을 다운로드하여 스파크 쉘을 실행할 때 jar 파일을 추가해 주면 됩니다. jar 파일은 다음의 위치에서 다운로드 합니다.

 

https://mvnrepository.com/artifact/org.apache.kafka/kafka-clients

 

Maven Repository: org.apache.kafka » kafka-clients

 

mvnrepository.com

 

스파크 쉘을 실행할 때 다음과 같이 jar 파일 옵션을 추가하면 됩니다.

$ spark-shell --jars kafka-clients-0.10.2.1.jar
반응형