การใช้งาน 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และsharedData Scientist Bootcamp อัพโหลด ดาวโหลด ลบไฟล์ใน Bucket data-scientistและsharedData 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()