ABEJA Platformにファイルをアップロードして、Jupyter Notebookで参照する

## はじめに

本記事は、以下の手順をまとめた記事の前編です。

（前編）
1. コンソールを用いて、ローカル環境からABEJA Platformにファイルをアップロードする
2. ABEJA Platoformのノーブック上からデータレイクのファイルを参照する
（後編）
3. ABEJA Platformのジョブ機能を用いて、scikit-learnを使った機械学習モデルを学習する
4. モデルをWeb APIとしてデプロイする

後編はこちらの記事を参照して下さい。
https://qiita.com/yushin_n/items/1f027dcdf3ea968f0903

## ローカル環境からABEJA Platformにファイルをアップロードする
### ファイルの用意
サンプルとして、Scikit-learnの[Irisデータセット](https://scikit-learn.org/stable/modules/generated/sklearn.datasets.load_iris.html)をロードします。


```python

import numpy as np
import os
import pandas as pd
from sklearn import datasets

# load iris datasets
iris = datasets.load_iris()
df = pd.DataFrame(iris.data, columns=iris.feature_names)
df['target'] = iris.target
```

CSV形式で保存します。

```python

# save as csv
os.makedirs('./data', exist_ok=True)
file_path = './data/iris.csv'
df.to_csv(file_path, index=False)
```

### データレイクチャンネルへのファイルのアップロード
コンソールのデータレイク --> チャンネルから「+チャンネル作成」をクリックして、チャンネルを作成します。
<img width="826" alt="Screen Shot 2019-05-17 at 19.42.45.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/376869/c2898e7c-67e3-81b9-f749-e7a41a81cc93.png">

「アップロード」をクリックして、先ほど作成したCSVファイルをアップロードします。
<img width="782" alt="Screen Shot 2019-05-17 at 19.40.30.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/376869/7938eb87-5bc4-27dd-443a-23481d512027.png">

## ABEJA Platoformのノートブック上からデータレイクのファイルを参照する
### ノートブックの立ち上げ
コンソールのジョブ定義から、「+ジョブ定義を作成」をクリックして、ジョブ定義（ワークスペースのようなもの）を作成します。
<img width="996" alt="Screen Shot 2019-05-17 at 20.11.05.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/376869/db0c8785-3ced-258d-662f-b736d0d34cc9.png">

ノートブックをクリックします。
<img width="1019" alt="Screen Shot 2019-05-17 at 20.14.07.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/376869/80e4128c-abcb-5a9e-6ce3-213134d269f4.png">

「+ノートブック作成」をクリックして、インスタンスの種類を選びます。今回はcpu-1を選択します。
<img width="847" alt="Screen Shot 2019-05-17 at 20.14.45.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/376869/9f0c2474-9ad1-46f5-98ed-ec72cddcf8ed.png">

「ノートブックを開く」をクリックして、Jupyter Notebookの画面から、ノートブックを立ち上げます。
<img width="826" alt="Screen Shot 2019-05-17 at 20.18.00.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/376869/76b65230-2c14-e841-b699-5ee7150a17f6.png">

### DataLakeのファイルの参照
今回は、データレイクのチャンネルにあるファイルの中から、最も新しい日付のファイルをロードすることにします。まず、コンソールのチャンネルから、チャンネルIDをコピーして入力します。

```python

import numpy as np
import os
import pandas as pd

from abeja.datalake import Client as DatalakeClient

# set datalake channel_id
channel_id = 'XXXXXXXXXXXXX'


def load_latest_file_from_datalake(channel_id):
    datalake_client = DatalakeClient()
    channel = datalake_client.get_channel(channel_id)

    # load latest file path
    for f in channel.list_files(sort='-uploaded_at'):
        latest_file_path = f.download_url
        latest_file_datetime = f.uploaded_at
        print('load file uploaded at {} (UTC time).'.format(latest_file_datetime))
        break

    return latest_file_path

file_path = load_latest_file_from_datalake(channel_id)
data = pd.read_csv(file_path, sep=',')
data.tail()
```

データレイクの中の最新のデータをロードすることができました。

<img width="610" alt="Screen Shot 2019-05-17 at 20.30.32.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/376869/ed333cb9-3361-ff30-18a8-37a070ef00ca.png">

ノートブックのcpuイメージには、CPU 環境で使用できる機械学習およびディープラーニングの代表的なライブラリ／フレームワークが含まれている（[ライブラリ一覧](https://developers.abeja.io/organization/model/all-cpu/#18-10)）ため、すぐにデータの分析や機械学習モデルの開発を行うことが可能です。

## 参考
ABEJA Platform SDKを使用して、データレイクのチャンネルを作成してファイルをアップロードしたり、データレイクから複数のファイルを取得したりすることも可能です。手順については、公式ドキュメントを参照して下さい :dog:
https://sdk-spec.abeja.io/datalake/sample_tutorial.html