1、簡介
最近在摸索利用sparkstreaming從kafka中准實時的讀取數據,並將在讀取的過程中,可以做一個簡單的分析,最后將分析結果寫入hbase中。
2、出現的問題
(1)將從kafka中讀取數據的程序打包到服務器上運行,發現需要用kafka相關的包,因此采用assembly的方法打包即可。
(2)運行 spark-submit --class "com.yiban.datacenter.MyDataCollection.KafkaToHbase" --master local MyDataCollection-0.0.1-SNAPSHOT-jar-with-dependencies.jar出現如下錯誤:
java.lang.NoClassDefFoundError: org/apache/htrace/Trace 這個錯誤很明顯是由於無法加載對應的類,也就是沒有添加相應的jar包。
分析原因:這個對應jar是一個htrace-core-3.1.0-incubating.jar 的jar包。本以為只需要在pom文件中添加對應的依賴項即可。但是我嘗試的結果還是報同樣的錯誤。
解決的方法:
既然還是報同樣的錯誤,於是就執行在執行命令的時候,通過命令行參數的形式指定對應的jar包的路徑即可。最后運行的命令如下所示:
spark-submit --class "com.yiban.datacenter.MyDataCollection.KafkaToHbase --master local --driver-class-path /opt/cloudera/parcels/CDH-5.4.4-1.cdh5.4.4.p0.4/jars/htrace-core-3.1.0-incubating.jar --conf spark.executor.extraClassPath=/opt/cloudera/parcels/CDH-5.4.4-1.cdh5.4.4.p0.4/jars/htrace-core-3.1.0-incubating.jar MyDataCollection-0.0.1-SNAPSHOT-jar-with-dependencies.jar
同樣也可以在yarn-cluster模式下運行:
spark-submit --class "com.yiban.datacenter.MyDataCollection.KafkaToHbase --master yarn-cluster --driver-class-path /opt/cloudera/parcels/CDH-5.4.4-1.cdh5.4.4.p0.4/jars/htrace-core-3.1.0-incubating.jar --conf spark.executor.extraClassPath=/opt/cloudera/parcels/CDH-5.4.4-1.cdh5.4.4.p0.4/jars/htrace-core-3.1.0-incubating.jar MyDataCollection-0.0.1-SNAPSHOT-jar-with-dependencies.jar