Latest Entries »

1. 先確定已安裝 Python 和 Java,若沒有請透過官網的連結下載最新版安裝
2. 在命令提示字元輸入

pip install pyspark

來下載安裝 pyspark
3. 若想要在 Jupyter Notebook 下啟動 pyspark,可以加入下列參數到 Windows 環境變數 (使用者變數或系統變數皆可)

PYSPARK_DRIVER_PYTHON = jupyter
PYSPARK_DRIVER_PYTHON_OPTS = 'notebook'
PYSPARK_PYTHON = python

4. 在命令提示字元輸入 pyspark 即可啟動
但是在 Windows 上還需要手動下載 winutils.exe
5. 到 https://github.com/steveloughran/winutils/ 下載對應版本的 winutils.exe (在 bin 資料夾內)
6. 將 winutils.exe 放到 C:\winutils\bin\ 下
7. 新增 Windows 環境變數: HADOOP_HOME = C:\winutils
接著還會遇到暫存資料夾 tmp\hive 權限的問題
8. 在你要開啟專案的硬碟的根目錄 (如 E:\) 建立資料夾 \tmp\hive
(假如 ipynb 在 E:\abc\def\code.ipynb 內,就建立兩個資料夾在 E:\tmp\hive,一般此資料夾會自動在執行 pyspark 時建立,但權限會有問題,需手動修改)
9. 用 winutils.exe 改變該暫存資料夾的權限

%HADOOP_HOME%\bin\winutils.exe chmod 777 E:\tmp\hive

10. 檢查該資料夾權限

%HADOOP_HOME%\bin\winutils.exe ls E:\tmp\hive

應該要為 drwxrwxrwx

這樣應該就可以正常使用 pyspark 了

Reference: https://blogs.msdn.microsoft.com/arsen/2016/02/09/resolving-spark-1-6-0-java-lang-nullpointerexception-not-found-value-sqlcontext-error-when-running-spark-shell-on-windows-10-64-bit/

廣告

Spark 安裝的方法有很多種,在此提供在 mac 上透過 python 的 pip 來安裝單機版的 Spark
此教學安裝的版本: Spark 2.3.1, python 3.6.5 (64 bits), macOS 10.13.5, Java 8.171
下列安裝說明假設你已從 Python 官網下載並裝好 Python 3+ (64 bits),並不需要從 Spark 官網另外下載 Spark 檔案

  1. 先到 Oracle 官網下載安裝 Java
  2. 將新安裝的 Java 加入 PATH 參數:
    a. 用文字編輯器 (如: TextEdit) 打開 .bash_profile 檔,此檔一般隱藏於使用者根目錄 ~ 下方
    b. 在檔案最下方加入:

    # Java 8
    export JAVA_HOME="/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home"
    export PATH=${JAVA_HOME}/bin:$PATH
    

    c. 在 Terminal 中輸入

    java -version

    ,若無錯誤應該會顯示:

    java version "1.8.0_171"
    Java(TM) SE Runtime Environment (build 1.8.0_171-b11)
    Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode)
    
  3. 在 Terminal 輸入:
    pip install pyspark

    來透過 pip 安裝 pyspark (或是用 pip3,如果你的 pip 不是 python 3 的話),Spark 檔案大小約 200 MB

  4. 安裝完後,在 .bash_profile 最底部再加入
    # pyspark 2.3.1 with Python 3.6
    export SPARK_HOME="/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pyspark"
    export PYSPARK_PYTHON=python3
    
  5. 要執行 pyspark 可以在 Terminal 輸入
    pyspark

    來執行。如果沒錯誤就會顯示類似:

    Python 3.6.5 (v3.6.5:f59c0932b4, Mar 28 2018, 05:52:31) 
    [GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.57)] on darwin
    Type "help", "copyright", "credits" or "license" for more information.
    2018-07-05 00:37:21 WARN  NativeCodeLoader:62 - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
    Setting default log level to "WARN".
    To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
    Welcome to
          ____              __
         / __/__  ___ _____/ /__
        _\ \/ _ \/ _ `/ __/  '_/
       /__ / .__/\_,_/_/ /_/\_\   version 2.3.1
          /_/
    
    Using Python version 3.6.5 (v3.6.5:f59c0932b4, Mar 28 2018 05:52:31)
    SparkSession available as 'spark'.
    >>>
    
  6. 可以嘗試輸入
    print(sc.version)

    看看 Spark 是否有正確啟動,有看到版本號就是正確啟動了

Pyspark in Jupyter

假如你想用 Jupyter Notebook 來啟動 Pyspark,可以加入下列參數到 .bash_profile

export PYSPARK_DRIVER_PYTHON=jupyter
export PYSPARK_DRIVER_PYTHON_OPTS='notebook'

這樣從 Terminal 啟動 pyspark 時就會自動開啟 Jupyter Notebook。

Reference:

Running pyspark after pip install pyspark
Get Started with PySpark and Jupyter Notebook in 3 Minutes

自學 SQL 推薦

快速免費自學 SQL 的網站 http://sqlzoo.net/
上面藉由練習題的方式,讓你快速學會 SQL 基礎的語法
學長說他做完上面的題目和教學,對 Data Scientist 來說就夠了,相當推薦
We will see.

Jupyter notebook 上,當你輸入左括號時,會自動幫你鍵入右括號,但判斷相當不聰明,常常你要打右括號卻會被吃掉。因此我通常都會把自動完成括號的功能關閉。

關閉自動括號完成的方法如下:
1. 打開隨意一個 Jupyter notebook 輸入並執行

from notebook.services.config import ConfigManager
c = ConfigManager()
c.update('notebook', {"CodeCell": {"cm_config": {"autoCloseBrackets": False}}})

2. 重新開啟 Jupyter notebook 即可。

這在 Windows 和 macOS 上都適用

Reference: https://stackoverflow.com/a/42566861/7159229

macOS 上安裝 lightGBM

首先需要安裝 Homebrew,在 terminal 裡輸入:

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

並輸入使用者密碼來安裝。

接著使用 Homebrew 來下載並安裝 cmake 和 gcc:

brew install cmake
brew install gcc

注意,Homebrew 所安裝的 gcc 會是最新版的 (2018 年時裝的是 gcc-8)。但是如果直接在 terminal 輸入 gcc 所執行的仍會是 macOS 原本預裝舊版 gcc 4.2.1。若之後要呼叫新版 (例如第8版) 的 gcc 請使用 “gcc-8”。

然後,用 git 下載並編譯 lightGBM。移至根目錄 ~ 後輸入:

git clone --recursive https://github.com/Microsoft/LightGBM ; cd LightGBM
export CXX=g++-8 CC=gcc-8
mkdir build ; cd build
cmake ..
make -j4

如果未來需要更新版本的 gcc,則把指令中的 8 改為新的版本號。

最後安裝 python 端的 lightgbm package:

pip3 install lightgbm

然後可以在 python 內執行

import lightgbm

來檢查是否安裝正確,接著就會發現錯誤XD [未完…]

References:
http://lightgbm.readthedocs.io/en/latest/Installation-Guide.html#macos
https://github.com/Microsoft/LightGBM/issues/1369
http://lightgbm.readthedocs.io/en/latest/Python-Intro.html#install

Please do NOT use “Microsoft YaHei" for Traditional Chinese. Please use “Microsoft JhengHei" instead!

微軟為中文開發的新字體有兩個,簡體字市場用的是「微軟雅黑體」,而繁體字市場的是「微軟正黑體」。由於微軟雅黑體內也包含繁體字,因此常常會看到有些系統誤把繁體字用微軟雅黑體顯示 (如:Google Account 頁面)。這常常讓繁體字的畫面看起來很凌亂、很不整齊。

下圖比較同樣的文字,用 微軟正黑體 (上) 和 微軟雅黑體 (下) 來顯示的結果:

可以看出數個問題:

  1. 繁體字在微軟雅黑體中,高度不一致,像是圖中的「資」、「頁」、「管」、「護」、「帳」、「虞」 等字,就比其他字要高。而「您」字則比旁邊要矮。這些字的下緣都沒有跟旁邊切齊。
  2. 微軟雅黑體的繁體字,不是正確的寫法 (以台灣來說),最明顯的是「透」、「過」左邊的辵部在雅黑體中少了一個凹。「過」右上的橫槓應該在右不再左。「及」中間那劃沒有接回、「虞」下面應該是「吳」而不是「口天」。
  3. 微軟雅黑體字體較正黑體為粗,但雅黑體不是每個字的粗細都一致,比例也明顯沒有調整過(縱劃都比橫劃要粗)。

這些問題導致,用微軟雅黑體來顯示繁體字,常會有雜亂的感覺。而會有這些差異,主要的原因應該是「微軟雅黑體」根本就不是特別為繁體字設計的,所以比例和位置都沒有對繁體字調整過。而且有很多字元在簡體字和繁體字的寫法本來就不同,雖然編碼上被當作同一個字元。

因此希望各位網頁設計者不要把微軟雅黑體用來顯示台灣地區的繁體字,感謝!

之前都是用 Chrome 和 Opera 開 Jupyter Notebook,

每次只要 notebook 太長、cell 數太多,瀏覽時就會開始 lag

後來發現 Firefox 沒有這問題,就算開很大的 notebook,瀏覽起來也是非常順暢,

所以之後就都換成用 Firefox 開 Jupyter notebook。

 

不過 Firefox 不是我的預設瀏覽器,所以這裡介紹如何在 Windows 下指定 Jupyter notebook 預設的瀏覽器。

  1. 在命令提示字元輸入
    jupyter notebook --generate-config

    以建立新的 jupyter_notebook_config.py 設定檔

  2. 在執行… (Win + R) 中,執行 .jupyter,以前往 jupyter_notebook_config.py 所在的資料夾,用文字編輯器開啟 jupyter_notebook_config.py
  3. 找到 #c.NotebookApp.browser,把它改成
    firefox_path = 'C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe'
    import webbrowser
    webbrowser.register('firefox', None, 
                        webbrowser.BackgroundBrowser(firefox_path), 1)
    c.NotebookApp.browser = 'firefox'
    

會需要 import webbrowser 是因為 Jupyter 基本上是用 webbrowser.get(‘firefox’).open(URL) 來啟動瀏覽器的,

但新版的 Firefox 不一定有被註冊在 python webbrowser 的資料庫中,所以必須先註冊 Firefox 才行。

Unit test in Physics?

在 CS 領域,寫程式常常會需要寫 unit test,來確保程式區塊的運作正常,這對後續維護程式碼相當方便。如果修改過後的程式碼無法通過 unit test,就代表該修改可能會不相容。由於 unit test 的範圍通常是一小段function,因此可以很快就找出有問題的 function。另外,寫 unit test 也有助於對該段程式碼的了解,如果根據你所預期的結果,對某段程式寫了 unit test 卻沒通過,代表你對該段程式碼的理解有誤,或是該段程式碼有 bug。

也許在理論物理也應該要建立這樣的 unit test,
在眾多的理論中,可以快速檢查各種新理論是否與實驗或已知現象或結論是否相符合。

有時候部分 Windows 7 的圖示,像是開始功能表列或桌面的程式圖示會消失

這是因為 Windows 有對這些程式圖示做快取,但快取資料庫可能被某些新安裝的程式弄亂了

下面方法方法可以重建圖示快取資料庫:

  1. 關閉所有的檔案總管 (Windows Explorer) 視窗
  2. 按 Ctrl + Shift + Esc 啟動 Windows 工作管理員 (Task Manager)
  3. 在「處理程序」頁面,找到 explorer.exe,在其上按右鍵
  4. 點選 「結束處理程序(E)」。 (這時工作列會消失,因為工作列就是 explorer.exe 的一部分。)
  5. 從工作管理員左上角的「檔案(F)」選單,點選「新工作 (執行…) (N)」
  6. 輸入 cmd 後按「確定」,以打開命令提示字元 (Command Prompt)
  7. 在 cmd 視窗內,依序輸入下列指令並按 Enter:
    cd /d %userprofile%\AppData\Local
    del IconCache.db /a
    exit
    (這步驟基本上刪除圖示快取檔,explorer.exe 重開後就會重建)
  8. 在工作管理員,點「檔案(F)」>「新工作 (執行…) (N)」
  9. 輸入 explorer 後按「確定」,工作列就會出現

資料來源 (英文):http://answers.microsoft.com/en-us/windows/forum/windows_7-desktop/icons-missing-their-specialized-image/3f1f7108-2984-4071-afd8-5bec9cceda38?auth=1

最近開始使用 Spyder 的 python IDE,其中包含 editor、IPython、變數檢視器、檔案檢視器和各種 documentation,對於需要不斷改 code 並實驗各種參數非常好用。

Spyder IDE 的 Github: https://github.com/spyder-ide/spyder
Spyder 官方網站: http://pythonhosted.org/spyder/index.html

由於我沒有安裝 Anaconda,這裡提供使用 pip 安裝的方法:

Spyder IDE 需要藉由 PyQt 來顯示圖形介面,因此需先安裝 PyQt。在 cmd 輸入:

pip install PyQt5

安裝完成後,接著輸入:

pip install spyder

來安裝 Spyder。如果沒問題就安裝好了。最新的 Spyder 版本是 3.2.0,但我在安裝 Spyder 3.2.0 遇到一些 unicode 的問題,所以目前我還是安裝舊版的 3.1.4

pip install spyder==3.1.4

如果以後 bug 修復了,可以再透過下列指令更新 Spyder

pip install -U spyder

 

Windows 上安裝完後,要啟動 Spyder IDE ,可以在 cmd 輸入:

spyder3

Spyder 的程式執行檔 “spyder3.exe" 是放在 Python 安裝位置下的 Scripts 資料夾 (Python 的其他 cmd 指令像是 pip 也都在此)。如果嫌麻煩,可以建立一個捷徑連結到 “spyder3.exe"。

註:一般 Python 3 的預設安裝位置是

C:\Program Files (x86)\Python 3.x (所有使用者安裝 32 位元)
C:\Program Files      \Python 3.x (所有使用者安裝 64 位元)
C:\Users\<user name>\AppData\Local\Programs\Python\Python3x-32 (個別使用者安裝 32 位元)
C:\Users\<user name>\AppData\Local\Programs\Python\Python3x    (個別使用者安裝 64 位元)

而 Python 2 的預設安裝位置是

C:\Python2x