Skip to main content

การใช้งาน 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

  1. เปิดเว็บไซต์ไปที่ http://172.17.113.251:9000 โดยใช้ Network ภายใน กฟน. เท่านั้น (ถ้า Work From Home ต้องใช้งาน VPN) จากนั้นกรอก Access Key เป็น รหัสพนักงาน และ Secret Key ตามรายละเอียดที่ ฝอร. แจ้งก่อนเริ่มเรียนในหลักสูตร Data Bootcamp

    MinIO Account

    ปัจจุบัน MinIO ให้บริการเฉพาะนักเรียนในหลักสูตร Data Analyst, Data Scientist และ Data Engineer ที่จำเป็นต้องแลกเปลี่ยนข้อมูลขนาดใหญ่สำหรับการทำงาน โดย Access Key และ Secret Key จะถูกส่งให้นักเรียนทางอีเมลล์

    MinIO

  2. หลังจาก Login แล้วโปรดดำเนินการเปลี่ยน Secret Key เพื่อความปลอดภัย โดยคลิกที่ ปุ่มทางขวาบน เลือก Change Password กรอกข้อมูลให้ครบถ้วน และ กด Update

    MinIO

  3. คุณสามารถกดปุ่มที่มุมขวาล่างเพื่อ สร้าง Bucket (Folder) ใหม่ และ อัพโหลดไฟล์ ตามรูป

    MinIO

  4. โดยปกติทุกหลักสูตรจะสามารถเข้าถึง 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

  1. ลง Package minio สำหรับบริหารจัดการ MinIO Object Storage และ veryprettytable สำหรับการแสดงผลตารางด้วยคำสั่ง

    pip install minio veryprettytable --user

  2. ทำการสร้าง 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 Package

ขึ้นอยู่กับ 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()