WFU WFU

2015年4月7日 星期二

【Azure Storage Table】從Azure Machine Learning 使用Writer上傳資料至 Azure storage table

首先幾點聲明:

1. 本人非資工出身,這是我在上傳資料所遇到的困難以及搜尋過後的解決辦法,用詞非常不專業。若當中敘述有誤,在煩請糾正。歡迎討論,虛心求教。

2. 會寫這篇網誌的緣故,一方面是怕自己之後再用到會忘記,另一方面則是若也有人有這方面的需求,也許可以從中獲取一些資訊。因為在自己摸索的過程中花了不少時間,所以紀錄一下。主要是專注在Azure Storage Table。

3. 主要是有兩點我一時在網路上找不到相關的資訊,而促使我寫成這篇網誌。第一點為Azure Storage Table在Azure Storage介面上面並無法看到上傳資料的狀況。第二點則是從Azure Machine Learning中使用Writer上傳資料的參數設定。

=====聲明結束=====

在介紹步驟之前,先簡略介紹一下Azure Storage Table。
Azure是微軟的一個平台,裡面有非常多功能,在這篇會用到的是儲存體的功能以及機器學習的功能。

Storage Table是一種儲存的形式,是非結構化的儲存方式。在建立Storage Table前,必須要知道Storage Table限制的格式。Storage Table只會有三個欄位,分別是Partition key, Row key, Value。Storage Table讀取資料的方式,便是給定一組Partition key及Row key,吐出Value。因此Partition key和Row key的組合必須唯一。而Partition key和Row key在命名上面有限制,像是不能出現"/", "\", "#", "?"符號......等,詳細的部分就再麻煩上網有更正確的結果。當初就是忽略這些設定,導致資料一直無法上傳,而Azure Machine Learning針對這個錯誤說明又不太明確。

粗略介紹完之後,接下來就是建立表格以及上傳資料的動作。

(一). 在Azure Storage新增資料服務

在登入Azure帳戶之後,在儲存體的部分,左下角按下「新增」,便可以新增一個儲存體帳戶,而在下方的「管理儲存金鑰」可以得到該儲存體帳戶的帳戶名稱和金鑰,這在之後使用C#連結儲存體時會需要。



(二). 根據所創立Storage table中的儲存體帳戶名稱以及主要存取金鑰,使用C#在該帳戶體名稱中建立Table。

得利於Visual Studio 2013免費開放,可以使用這個包山包海的IDE。在這裡是使用C#的方式連結儲存體,並且在該儲存體中建立Table。同樣也可以用Python來建立,而且Python的指令相較於C#而言較容易使用。

微軟本身有針對使用C#和Python的部分有寫說明書,基本上按部就班就可以在Azure Storage中建立Table,以及上傳資料。目前測試都正常。
該說明書內容簡單如下:
a. 建立Azure 儲存體帳戶
b. 於C#中,開啟Azure Cloud Service專案,建立connection string並連結至Azure storage Table(重要)
c. 簡單的資料整理 (新增資料表、新增資料,刪減資料,刪除資料表...等。)


而下面兩點是我覺得很值得分享的部分:
1. 我想我那時候一直搞不定的原因是,是我們所要建立的資料,都是依附在這個儲存體之下,所以要是沒有先建立一個資料表(Table, blob,...etc),是無法上傳資料。
2. 從Azure Machine Learning中的儲存體介面中,是無法看到自己上傳資料的過程(目前我看不到),所以另外下載「Azure Storage Explore」,便可以即時的看到所建立的資料表,以及藉由Refresh便可以知道是否有正在上傳。



(三). 將儲存在Azure Machine Learning的資料,利用Writer將資料寫入Azure Storage Table。
微軟說明書所教的部分是在於將一筆筆資料使用手動的方式上傳,而若是有資料從Azure Machine Learning運算出結果,並且要將此結果儲存在Azure Storage Table,則可以使用「Writer」這個按鈕。

Writer這個按鈕有幾個參數如下:
a. data destination:由於在這篇主要是介紹Azure Storage Table,所以目的地選擇為Azure Table
b. table authentication type:Account
c. Table account name:第一步所設定的帳戶名稱
d. Table account key:儲存體帳戶金鑰
e. Table name:使用C#所創立的儲存表明稱
f. Partition key:欲上傳的資料,哪一個欄位或是名稱要設定為Partition key
g. Row key :欲上傳的資料,哪一個欄位或是名稱要設定為Row key
h. Origin column:欲上傳的資料,哪一個欄位或是名稱要設定為Value
j. destination column:Value的欄位名稱
k. write mode:寫入的方式 (插入、取代、合併......等)

在這些參數設定好後,按下執行,便可以上傳。可以透過Azure Storage Explore來看是否有成功。

以上。

沒有留言:

張貼留言