您好,登錄后才能下訂單哦!
本篇文章給大家分享的是有關大數據開發中怎么解決Windows下開發環境常遇的幾個問題,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
大數據開發的測試環境,很多人不以為然,其實重復的打包,上傳,測試雖然每次時間大概也就幾分鐘,但是積累起了往往會花費很多的時間,但是一個完整的測試環境在生產環境下往往難形成閉環,拋開堡壘機權限不說,hadoop,hive,spark等服務端的權限也會難倒一群英雄好漢,主要是太繁瑣了,測試環境的搭建,我這里采用Docker容器,適合多端遷移,而且容器的鏡像大小也比虛擬機小很多,難度上說,也只需要掌握幾個基礎的命令即可,除非想引入K8s等技術,但測試環境完全沒必要,Docker環境搭建大數據平臺的系列從這里大數據開發-Docker-使用Docker10分鐘快速搭建大數據環境,Hadoop、Hive、Spark、Hue、Kafka、ElasticSearch.....[https://blog.csdn.net/hu_lichao/article/details/112125800](https://blog.csdn.net/hu_lichao/article/details/112125800)
,環境搭建好了,可能還是會有一些特殊的問題
在Win操作系統,idea下開發hadoop程序或者Spark程序,那么你肯定會遇到下面的問題
之所以出現上面的問題,Spark程序和Hadoop在idea寫編寫的程序是依賴hadoop的環境的,所以要提前配置好,并且設定HADOOP_HOME
,不一定需要$HADOOP_HOME/bin
到PATH
,后者是給快捷方式用的
注意:配置完環境變量后要將idea,退出后重進,不能**Restart
**
錯誤如下圖
出現這個問題的原因是版本沖突,即使看起來不那么明顯,可能是spark依賴的包中的hadoop和hadoop依賴的版本不一致https://stackoverflow.com/questions/45470320/what-is-the-kerberos-method,具體不一致的問題,可能各有不同,解決難易程度因人而異????????????,我的解決方式就是exclude
掉spark
的低版本hadoop
這個問題,我是這么遇到的,如下程序:
// results.foreach(System.out::println); //輸出沒有序列化 results.foreach(x -> System.out.println(x));
首先foreach
是action算子,需要將task上的數據拉到driver上來遍歷顯示,就需要序列化,如果習慣了Java的lambda寫法,可能會寫第一種,第一種寫法的問題是沒有序列化,序列化是在閉包里完成的,而使用靜態方法調用的方式,沒有閉包化,所以會報序列化的問題,寫成第二種就可以了,System.out是一個final static
對象。
public final static PrintStream out = null;
以上就是大數據開發中怎么解決Windows下開發環境常遇的幾個問題,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。