การใช้งาน MinIO Object Storage
ในกรณีที่ต้องการแลกเปลี่ยนข้อมูลดิบขนาดใหญ่และไม่สามารถอัพโหลดขึ้น Public Cloud เช่น Microsoft OneDrive, Google Drive หรือ Dropbox ได้เนื่องจากติดเงื่อนไขและนโยบายภายใน กฟน. คุณสามารถใช้บริการ MinIO ใน Data Platform สำหรับการเก็บและแลกเปลี่ยนไฟล์ขนาดใหญ่ภายในองค์กรได้
คุณสมบัติของ MinIO Object Storage
- สามารถใช้งานผ่าน Web Browser สำหรับ Data Analysts
- สามารถใช้งานอัพโหลดและดาวโหลดผ่าน Python API เพิ่มความสะดวกให้กับ Data Scientists และ Data Engineers
การใช้งานผ่าน Web Browser
- เปิดเว็บไซต์ไปที่ - http://172.17.113.251:9000โดยใช้ Network ภายใน กฟน. เท่านั้น (ถ้า Work From Home ต้องใช้งาน VPN) จากนั้นกรอก- Access Keyเป็น- รหัสพนักงานและ- Secret Keyตามรายละเอียดที่ ฝอร. แจ้งก่อนเริ่มเรียนในหลักสูตร Data BootcampMinIO Account- ปัจจุบัน MinIO ให้บริการเฉพาะนักเรียนในหลักสูตร Data Analyst, Data Scientist และ Data Engineer ที่จำเป็นต้องแลกเปลี่ยนข้อมูลขนาดใหญ่สำหรับการทำงาน โดย - Access Keyและ- Secret Keyจะถูกส่งให้นักเรียนทางอีเมลล์ 
- หลังจาก Login แล้วโปรดดำเนินการเปลี่ยน - Secret Keyเพื่อความปลอดภัย โดยคลิกที่ ปุ่มทางขวาบน เลือก Change Password กรอกข้อมูลให้ครบถ้วน และ กด- Update 
- คุณสามารถกดปุ่มที่มุมขวาล่างเพื่อ สร้าง Bucket (Folder) ใหม่ และ อัพโหลดไฟล์ ตามรูป  
- โดยปกติทุกหลักสูตรจะสามารถเข้าถึง Bucket - publicได้ คุณไม่ควรจะใส่ข้อมูลส่วนตัวใน- publicนอกจากนี้คุณจะมีสิทธิการใช้งานดังนี้- หลักสูตร - สิทธิพื้นฐาน - Data Analyst Bootcamp - อัพโหลด ดาวโหลด ลบไฟล์ใน Bucket - data-analystและ- shared- Data Scientist Bootcamp - อัพโหลด ดาวโหลด ลบไฟล์ใน Bucket - data-scientistและ- shared- Data Engineering Bootcamp - อัพโหลด ดาวโหลด ลบไฟล์ใน Bucket - data-engineer,- dagsและ- sharedหลายหลักสูตร- ในกรณีที่คุณเรียนหลายหลักสูตร สิทธิการเข้าถึงของคุณจะเพิ่มขึ้นตามหลักสูตรที่เรียน และ ยังคงอยู่หลังจากจบหลักสูตร 
การใช้งานผ่านภาษา Python
คุณสามารถใช้งาน MinIO ผ่าน Python API ได้ตามขั้นตอนด้านล่าง โดยสามารถใช้งานร่วมกับ Anaconda Python Distribution ที่ใช้ในหลักสูตร Data Scientist ได้
ติดตั้ง Package
- ลง Package - minioสำหรับบริหารจัดการ MinIO Object Storage และ- veryprettytableสำหรับการแสดงผลตารางด้วยคำสั่ง- pip install minio veryprettytable --user
- ทำการสร้าง Connection ไปที่ MinIO Server - from minio import Minio
 client = Minio(
 endpoint='172.17.113.251:9000', # MinIO Server Address
 access_key='YOUR_ACCESS_KEY', # ACCESS_KEY ที่ได้รับในอีเมลล์.
 secret_key='YOUR_SECRET_KEY', # SECRET_KEY ที่ได้รับในอีเมลล์.
 secure=False # ไม่ใช้ SSL
 )
ตัวอย่างการใช้งาน
ตัวอย่างด้านล่างแสดงเฉพาะกรณีที่ใช้งานบ่อยในหลักสูตร Data Scientist และ Data Engineering เท่านั้น และ ไม่ได้แจกแจงรายละเอียดเกี่ยวกับ Functions ที่ใช้ คุณสามารถตรวจสอบ รายละเอียดทั้งหมดเกี่ยวกับ Python API, Function, Class ได้บนเว็บไซต์ของ MinIO
แสดงรายการ Bucket
from veryprettytable import VeryPrettyTable
# Create an instance of veryprettytable
bucket_list = VeryPrettyTable()
bucket_list.field_names = ['#', 'Name', 'Creation Date']
# list_buckets method return an iterator of bucket objects.
for i, bucket in enumerate(client.list_buckets()):
    bucket_list.add_row([i, bucket.name, bucket.creation_date])
print(bucket_list)
แสดงรายการไฟล์ใน Bucket
from veryprettytable import VeryPrettyTable
object_list = VeryPrettyTable()
object_list.field_names = ['#', 'Name', 'Size (MB)', 'Last Modified']
for i, obj in enumerate(client.list_objects(bucket_name='shared')):
    object_list.add_row([i,
                         obj.object_name,
                         f'{obj.size/(1024**2):0.2f}',
                         obj.last_modified])
print(object_list)
ดาวโหลดไฟล์
client.fget_object(
    bucket_name='shared',
    object_name='titanic.csv',
    file_path='titanic.csv')
อัพโหลดไฟล์ไปที่ MinIO Server
client.fput_object(
    bucket_name='shared',
    object_name='titanic_copy.csv',
    file_path='titanic.csv'
)
อ่านไฟล์ CSV จาก MinIO ด้วย pandas
import io
# get_object returns urllib3.response.HTTPResponse object
obj = client.get_object(bucket_name='shared', object_name='titanic.csv')
# Convert byte stream to UTF-8 string, the use BytesIO to create file-like object
df = pd.read_csv(io.BytesIO(obj.data))
df.info()
อ่านไฟล์ Parquet จาก MinIO ด้วย pandas
import io
obj = client.get_object(bucket_name='shared', object_name='userdata.parquet')
df = pd.read_parquet(io.BytesIO(obj.data))
df.info()
ขึ้นอยู่กับ Python Distribution ที่ใช้งาน คุณอาจจะต้องติดตั้ง Package pyarrow หรือ fastparquet เพิ่มเติมด้วยคำสั่ง pip install pyarrow --user
อ่านไฟล์ JSON จาก MinIO ด้วย pandas
import io
obj = client.get_object(bucket_name='shared', object_name='comments.json')
df = pd.read_json(io.BytesIO(obj.data))
df.info()