빅데이터/spark
[spark] AWS EMR에서 Caused by: java.lang.ClassNotFoundException: org.apache.kafka.common.serialization.ByteArrayDeserializer 오류 발생시 해결 방법
hs_seo
2019. 10. 14. 17:10
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
스파크 쉘을 실행할 때 다음과 같이 jar 파일 옵션을 추가하면 됩니다.
$ spark-shell --jars kafka-clients-0.10.2.1.jar
반응형