IPython Notebook

2014Q4 工作心得 (3)

評估和導入前端應用的新技術和工具,今年初我們開始導入 Node.js 和 AngularJS 進行 Single Page Application 開發,就能解決大部份公司所面臨的問題,可是當專案越來越大,此時 AngularJS 效能和維護就會是大問題,因此我開始嘗試找解決的方案,React.js 單向資料流相較於 AngularJS 雙向資料綁定,資料處理架構更加明暸簡單,此外 React.js 的 Virtual DOM 更讓效能相關於 AngularJS 有明顯的差別,此外 React.js 搭配 jQuery 套件從無到有實際開發出呈現資料表格的網站,意外的非常簡單易懂,所以目前已經有部份專案的部份元件已經開始採用 React.js 進行開發。

調整和升級後端伺服器的應用,今年中我們開始導入 Sails.js 和 MongoDB 進行資料即時儲存的管理,像是推播通知系統如何儲存使用者的 Device Token 和 Register ID ,可是當資料量越來越大時,存取效能和穩定運作就會開始產生問題,因此我開始嘗試找解決的方案,Google BigQuery 提供的串流資料和 SQL 查詢就能解決資料即時儲存的管理,但是並非所有需求皆能解決,像是推播排程需要 CRUD 的功能,此時 MongoDB 就比 Google BigQuery 更適合,可是當需求為直接即時新增使用者資料,接著透過 Google BigQuery 在適當的時機透過 SQL 查詢篩選出符合條件的使用者資料,此時 Google BigQuery 就比 MongoDB 更適合,所以目前已經有部份專案依據需求的適切性開始轉移 Google BigQuery 進行管理。

最後資料呈現的方式,目前主要是透過 Google Docs 排程取得 Amazon RDS 、 MongoDB 、 Google BigQuery 和 Google Analytics 的資料進行整合產生業務專用的數據表格,下一步針對圖表的需求,要能讓業務根據樣本資料拉出需要的圖表,同時又能讓工程師直接實作出被需要的圖表,因此我開始嘗試找解決的方案,Plotly 是個圖表呈現的線上服務,除了能讓業務根據樣本資料拉出需要的圖表,又能讓工程師直接實作出被需要的圖表,並且搭配 Node.js 就能與 Google BigQuery 進行自動化的整合,此外業務要如何存取 Google BigQuery 的資料呢? IPython Notebook 是個筆記本的網站服務,能夠以筆記本的方式描述資料如何存取,以及透過 Python 指令直接直接執行程式碼存取 Google BigQuery 的資料,以及進行基本的資料分析與統計應用,所以目前已經開始在規劃 Plotly 和 IPython Notebook 詳細的整合應用標準操作流程 (Standard Operating Procedure, SOP)。

資料分析 Big Data (1)

基本介紹

教學目標

初步了解 Big Data 改變的未來新趨勢。

重點概念

Analytics & Machine Learning

Rapid Insights Providing Business Impact

  • “Just-in-time” analytics that can be directly embedded into business processes for business outcome comparisions.
  • Analytical solutions available at point of decision.
  • New solutions must dynamically mix & analyze data from realtime to historical to meet continuous business results - machine learning leveraged.

Best Practice: Apache Spark

Lambda Data Management

Lambda Data - new lens on data systems, designed to tame growing complexity.

  • Defineds set of principles for how batch & stream processing can work together.
    • Human fault-tolerant.
    • Immutability - keep data immutable for the range of business contexts.
    • Pre-computation & re-computataion.
  • Data Handling Layers
    • Batch Layer - stores the master data set. (e.g. Hadoop、HDFS)
    • Server Layer - indexes & offers precomputed views for ad hoc with low lantency queries.
    • Speed Layer - real-time views are incremental - “complexity isolation”, transient handle only transient additions until next batch reompilation.

Best Practice: Google BigQuery

Application Development & Business Integration

Notebook IDEs becoming all rage

  • OSS innovation for web-base, interactive approach for new solution collaboration rising fast - one unified place for team to share insights, business results, nodes, etc…
  • Notebook-as-a-servic - micro services “good enough” for some analytics-based solutions until business leaders need / expect realtime speeds.

Implications For Future Applications

  • Answering open-ended business questions - velocity, variety & volume for big data set new stage
  • Business can deal with close approximations sooner than higher analytics accuracy in hindsight
  • Innovations in data handling & analytics starting to address new class of business applications
    time-to-value - launch product -> continuously analyze business impact-> learn & refine then repeat.

Best Practice: The IPython Notebook

相關資源

資料分析 IPython 處理 (2)

基本介紹

教學目標

學習如何在 IPython Notepad 中透過 Pandas 套件進行 Google BigQuery 查詢。

使用教學

套件安裝

請先切換管理者權限。

1
$ sudo su

確認 python 版本為 2.7.6 。

1
$ python -V

安裝 Pandas 和 Google API 相關套件。

1
2
3
$ pip install pandas
$ pip install --upgrade google-api-python-client
$ pip install --upgrade python-gflags

執行 IPython Notebook 網站服務。

1
$ ipython notebook --profile=[設定檔名稱] --no-browser

撰寫程式

開啟瀏覽器在網址列輸入 http:// [伺服器 IP 位址]:8888 ,登入密碼之後,開啟 IPython Notebook 網站服務。

按下 New Notebook 按鈕新增 notebook ,接著輸入 python 程式碼。

輸入程式碼透過 Pandas 套件進行 Google BigQuery 查詢

1
2
3
4
import pandas as pd
projectId = "Google 專案 ID"
df = pd.read_gbq('select repository.language, count(*) as total from publicdata:samples.github_nested where repository.language is not null group by repository.language order by total desc limit 10;', projectId)
df

先執行之後終止再執行,就能夠透過驗證碼的方式進行 Google API 授權認證。

執行結果

repository_language total
0 JavaScript 372211
1 Ruby 259329
2 Java 223470
3 Python 193720
4 C 186949
5 PHP 177864
6 C++ 102954
7 Objective-C 50522
8 Shell 45875
9 C# 44594

相關資源

資料分析 IPython 處理 (1)

基本介紹

教學目標

學習如何在 Ubuntu 作業系統伺服器中 安裝 IPython Notepad,接著透過瀏覽器進行 Python 語言的實作。

使用教學

套件安裝

請先切換管理者權限。

1
$ sudo su

確認 python 版本為 2.7.6 。

1
$ python -V

安裝 IPython 相關套件。

1
2
3
4
5
6
7
$ apt-get install python-pip
$ apt-get install python-dev
$ apt-get install libevent-dev
$ pip install ipython
$ pip install pyzmq
$ pip install jinja2
$ pip install tornado

設置密碼

執行 IPython 。

1
$ ipython

產生密碼雜湊碼,將會設定至 IPython Notebook 中。

1
$ from IPython.lib import passwd; passwd()

建立 IPython Notebook 設定檔。

1
$ ipython profile create [設定檔名稱]

編輯 IPython Notebook 設定檔。

1
$ vi /root/.ipython/profile_dmp/ipython_config.py

新增 IPython Notebook 設定屬性。

1
2
3
4
5
...
c.NotebookApp.port = 8888
c.NotebookApp.ip = '0.0.0.0'
c.NotebookApp.password = [密碼雜湊碼]
...

執行服務

執行 IPython Notebook 網站服務。

1
$ ipython notebook --profile=[設定檔名稱] --no-browser

最後開啟瀏覽器在網址列輸入 http:// [伺服器 IP 位址]:8888 ,登入密碼之後,即可開始使用 IPython Notebook 網站服務。

相關資源