原创 arrayList擴容內部是怎麼實現的
1、查看ArrayList的add方法,場景假設,一個list長度是10,目前有5個元素 public boolean add(E e) { ensureCapacityInternal(size + 1);
原创 spark算子:RDD的轉化操作groupbykey
scala> var rdd1 = sc.makeRDD(Array(("A",0),("A",2),("B",1),("B",2),("C",1))) rdd1: org.apache.spark.rdd.RDD[(String, I
原创 Java的堆和棧中對象的區別
1、棧中主要存放一些基本類型的變量(int, short, long, byte, float, double, boolean, char)和引用對象。Java中分配堆內存是自動初始化的。 2、Java中所有對象的存儲空間都是在堆中分配
原创 scala中的break和continue
下面2個例子的區別其實就是breakable的範圍大小,在循環外就是break,在循環內就是continue。 import scala.util.control.Breaks._ object HdfsOps { def ma
原创 spark CheckPoint的寫流程源碼分析
Checkpoint 寫數據時序圖: 1、開始checkpoint,即寫入 RDD 到 hdfs 開始 checkpoint 的入口 是在 SparkContext 提交 Job 時(提交 Job 是發生在 RDD 調用 actio
原创 hadoop namenode HA 高可用概念和切換NameNode
1、架構介紹 上圖,加入zookeper集羣,當nn主節點掛掉,通過zk自動將nn副本升級爲主節點。 爲了提供快速故障轉移,備用節點還必須具有關於羣集中塊的位置的最新信息。爲了實現這一點,DataNode配置了所有NameNode的位置
原创 flink狀態管理
State的作用 state是Flink程序某個時刻某個task/operator的狀態,state數據是程序運行中某一時刻數據結果。首先要將state和checkpoint概念區分開,可以理解爲checkpoint是要把state數據持
原创 scala操作hdfs
1、讀取hdfs目錄:hadoop dfs -ls path相當於listStatus的簡寫 //checkpoint目錄是:/user/dmspark/accumulate/checkpoint //e.g. /user/dmspar
原创 RDD、DataFrame和DataSet之間的轉化和異同點
1、轉化原理 RDD關心數據,DataFrame包含結構信息,關心結構,DataSet包含結構和類型信息,關心類型; ① 將RDD轉換爲DataFrame,需要增加結構信息,所以調用toDF方法,需要增加結構; ② 將RDD轉換爲
原创 spark on hive & hive on spark的區別
1、Spark on Hive 數據源是:hive,Spark 獲取hive中的數據,然後進行SparkSQL的操作 (hive只是作爲一個spark的數據源)。 spark on hive 是spark 通過spark-sql 使用h
原创 sparkSQL之數據源讀取parquet、json、csv案例
1、讀取parquet數據源 import org.apache.spark.sql.SQLContext import org.apache.spark.{SparkConf, SparkContext} /** * Creat
原创 DataFrame和DataSet的使用案例
1、DateFrame使用案例 import org.apache.spark.sql.{DataFrame, SQLContext} import org.apache.spark.{SparkConf, SparkContext}
原创 sparkSQL之DataFrame創建
1、 SparkSession 是SQLContext和HiveContext的組合; 爲了向後兼容,所以在SQLContext和HiveContext上可用的API在SparkSession上同樣是可以使用的。 SparkSession
原创 hive計算每個月和每週的第一天的count(*)
1、計算每個月的第一天的count(*) select p_day as subDay,count(*) sumCount from t_app_sbd where p_day>=20200201 and substr(p_day,7
原创 @transient作用
java 的transient關鍵字爲我們提供了便利,你只需要實現Serilizable接口,將不需要序列化的屬性前添加關鍵字transient,序列化對象的時候,這個屬性就不會序列化到指定的目的地中。