原创 airflow使用macros

起因: 由於公司裏面使用airflow進行調度,昨晚一個依賴任務失敗了,導致需要重跑我的任務。今天早上同事的依賴任務跑完後,我這邊就需要接着重跑自己的任務。這時我發現了,原來我之前的代碼是通過datetime來獲取日期,然後對hi

原创 spark寫入hive出現數據不一致

記錄一下這次遇到的詭異的坑,就是spark寫入hive出現數據不一致的問題。 問題描述如下: 使用spark創建dataframe,通過createOrReplaceTempView創建臨時表 檢查創建的臨時表,與Da

原创 快速搭建Kafka服務

搞流處理的話,無論如何是繞不過Kafka的了,還好Kafka是一個概念比較好理解的架構模型。 我覺得官方的這三張圖已經很好地把模型結構給闡述清楚了。 發佈-訂閱模型:實現消息寫入與消息讀取解耦。Kafka相當於是一個消息緩衝池

原创 使用Structured Streaming消費Kafka數據

由於工作需要,在數據收集上牽扯到多個維度的爬蟲數據。之前的流程是:爬蟲工程師通過文件方式保存爬取的數據,交付給我們做數據清洗處理,再導入到數據庫。爲了降低交互過程中的時間成本,提高效率,我們開始引入流處理的方式。 之前的模式:

原创 MLflow Models 模塊解析

通過Tracking和Projects模塊,我們可以管理記錄參數以及整合不同的項目。最後這些訓練出來的模型如何做到在線部署或者是做批處理應用,這個需要使用MLflow Models來解決。 同樣的,在MLflow Models相關

原创 MLflow Projects 模塊解析

通過Tracking模塊,我們已經能夠對參數進行管理。接下來我們通過Projects模塊來實現可複用的代碼以及爲後續生產部署做準備。 從文檔可以看到Projects模塊的定義:這是一種基於約定俗成的規則來對代碼進行管理的格式。 提

原创 MLflow Tracking 模塊解析

MLflow Example Github地址 https://github.com/mlflow/mlflow-example 大家在試用MLflow的時候可以用上面這個github代碼來做演示。 MLflow tracking

原创 Paddle 模型保存與加載

前面我們已經通過搭建LeNet模型來識別手寫數字MNIST,最終一個epoch訓練的模型準確率可以達到97.5%. 接下來我們看如何對模型進行保存以及後續加載模型進行推斷。 Paddle提供兩種方式的保存和加載模型: 保存整個模型

原创 Paddle的實時畫圖功能

記得第一次跑Paddle的官方例子時,最讓我驚奇的是它能實時地顯示train loss和val loss隨着訓練次數的變化圖。 之前用Pytorch都是在訓練過程中先打印訓練過程的loss,並且把他們保存起來。最後等訓練完成再作圖。所

原创 PaddlePaddle 數據集初探

最近開始使用PaddlePaddle深度學習框架,因爲之前有使用過Tensorflow和Pytorch,所以整體感覺上手不難。 具體官方文檔以及Github資料如下,可以說最吸引我的地方在於百度爲了推廣這個框架,把很多主流的模型都官方

原创 在scala編譯的jar包中使用hive,通過spark-submit提交spark sql任務

之前一直是在交互式操作hive表,這次使用scala編譯成jar包,通過spark-submit提交到yarn 首先由於是用maven來管理scala項目,所以需要增加pom.xml的配置文件,要注意scala版本要跟spark的

原创 Spark讀取hive表

Spark讀取hive表 hive相關安裝問題,請參見別的資料 由於在hive裏面操作表是通過mapreduce的方式,效率較低,本文主要描述如何通過spark讀取hive表到內存進行計算。 第一步,先把$HIVE_HOME/conf

原创 spark on yarn 配置

之前一直是在搭建好的集羣上使用spark。 這次需要在新的集羣上使用spark,但是集羣只安裝了hdfs和yarn組件。經過別人提醒,可以直接spark on yarn運行,經過收集資料,彙總如下: 1. spark on yarn配

原创 git 常用命令

配置 git config --global user.email "[email protected]" git config --global user.name "Your Name" 初始化 git init 新增緩存區文件 g

原创 Spark ML CrossValidator獲取最佳參數

獲取所有參數組合以及對應的cv評估結果,zip之後進行排序(按照metric由好往壞),提取出對應的Param:value字典 def getBestParam(cvModel): params = cvModel.getEs