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