原创 SparkTask未序列化(Tasknotserializable)問題分析

問題描述及原因分析在編寫Spark程序中,由於在map等算子內部使用了外部定義的變量和函數,從而引發Task未序列化問題。然而,Spark算子在計算過程中使用外部變量在許多情形下確實在所難免,比如在filter算子根據外部指定的條件

原创 Spark算子使用外部變量的優化

第一、使用FastUtil改寫外部變量,FastUtil拓展了java的標準集合,它可以提供更小的內存佔用以及更快的存取速度。FastUtil的每一種集合類型,都實現了java的對應接口,可以直接用來替換已有代碼中的對應集合。 第二、

原创 checkpoint的正確使用方式及其與persist的區別

一、正確使用方式 在執行checkpoint之前先對RDD進行Persist:應爲checkpoint操作會啓動一個job,spark默認會重新計算執行checkpoint操作的RDD,也就是說,需要從源頭開始再計算一次,明顯的重複計

原创 Spark算子調優

1、使用mapPartitions或者mapPartitionWithIndex取代map操作,其中mapPartitions和mapPartitionWithIndex的區別在於是否將分區號index傳入分區處理函數。 eg.對於將

原创 hive中order by,sort by, distribute by, cluster by作用以及用法

1. order by     Hive中的order by跟傳統的sql語言中的order by作用是一樣的,會對查詢的結果做一次全局排序,所以說,只有hive的sql中制定了order by所有的數據都會到同一個reducer進行

原创 找不到@HystrixCommand標籤

Spring cloud中整合Hystrix時,無法識別@HystrixCommand標籤,項目的Hystrix依賴爲: <dependency> <groupId>org.springframework.cloud</g

原创 elasticsearch知識點記錄

一、Elasticsearch和傳統數據庫數據對比: 二、因爲Elasticsearch有遠程腳本執行功能,容易中木馬病毒,所以不允許用root用戶啓動,需要切換到普通用戶啓動。 三、配置yml結尾的配置文件都需要在冒號後面加空格纔

原创 FileSystem.open()讀取 HDFS上的文件遇到的問題

FileSystem.open()方法返回的是一個FSDataInputStream對象,我是直接通過FSDataInputStream的readLine()按行讀取內容的,這個方法是deprecated的,就是過期了,其實平時寫代碼

原创 推薦系統(二)微博廣告推薦

業務場景:根據用戶近期發佈的微博,來推薦相關廣告。簡單說就是根據微博內容中所涉及到的詞條與廣告關鍵詞的匹配度來推薦。 用到的關鍵算法:tf-idf算法,它是一個文本挖掘的重要算法,用來評估字/詞對於一個語料庫中的一份文本文件的重要程度

原创 推薦系統(一)好友推薦

之前學習過幾個推薦業務,總結一下。首先,好友推薦業務 好友推薦已經是很常見的業務了,很多軟件,我們熟知的qq、微博等社交軟件都有該業務。 上圖是我畫的一個簡單的好友關係圖,雙向箭頭表示互爲好友關係。我們已分析小明的推薦好友爲例分析。

原创 Java泛型

泛型,一個孤獨的守門者。 大家可能會有疑問,我爲什麼叫做泛型是一個守門者。這其實是我個人的看法而已,我的意思是說泛型沒有其看起來那麼深不可測,它並不神祕與神奇。泛型是 Java 中一個很小巧的概念,但同時也是一個很容易讓人迷惑的

原创 Hadoop主從切換失敗

主節點node1,從節點node2,集羣啓動後node1 Active,node2 Standby,通過在node1上執行hadoop-daemon.sh stop namenode來使node2切換爲Active。 發現切換失敗(之

原创 Hive通過using jar創建function時的緩存問題

項目中遇到的小知識點,記錄一下。 我們通過using jar方式創建function後,這個jar包(假設爲a.jar)會被緩存,如果創建下一個function時,同樣需要使用a.jar,但是不同的是這個a.jar是重新打的包,它裏面

原创 Failed to recognize predicate 'row'. Failed rule: 'identifier' in column specification

Hive創建Hbase外聯表時報的錯。 錯因:row與Hive關鍵字同名了,改爲其他名即可

原创 DataInput.readInt()報錯:java.io.EOFException

實現WritableComparable接口序列化時,在readFields方法裏,使用DataInput的readInt方法讀取在write方法裏寫的int,報錯:EOFException。 這個錯的意思是:輸入流已經到了結尾,在這