一、簡介java
最近在摸索利用sparkstreaming從kafka中準實時的讀取數據,並將在讀取的過程當中,能夠作一個簡單的分析,最後將分析結果寫入hbase中。apache
二、出現的問題服務器
(1)將從kafka中讀取數據的程序打包到服務器上運行,發現須要用kafka相關的包,所以採用assembly的方法打包便可。spa
(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包。 ci
分析緣由:這個對應jar是一個htrace-core-3.1.0-incubating.jar 的jar包。本覺得只須要在pom文件中添加對應的依賴項便可。可是我嘗試的結果仍是報一樣的錯誤。kafka
解決的方法:it
既然仍是報一樣的錯誤,因而就執行在執行命令的時候,經過命令行參數的形式指定對應的jar包的路徑便可。最後運行的命令以下所示:spark
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.jario
一樣也能夠在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