@@ -19,19 +19,13 @@ def init_logger(logger_name, logger_level):
1919 logger .setLevel (logger_level )
2020
2121
22- # Example for data experts like data scientists and data engineers.
23- def main ():
24- global logger
25- init_logger ("fluidsdk" , logging .INFO )
26-
27- client_config = ClientConfig ()
28- fluid_client = FluidClient (client_config )
29-
22+ def create_dataset_with_alluxio (fluid_client : FluidClient ):
3023 dataset_name = "demo"
3124 try :
25+ # Mounting WebUFS to Alluxio
3226 fluid_client .create_dataset (dataset_name , "hbase" , "https://mirrors.bit.edu.cn/apache/hbase/stable/" , "/hbase" )
3327 except Exception as e :
34- raise RuntimeError ("f" "Failed to create dataset: {e}" )
28+ raise RuntimeError (f "Failed to create dataset: { e } " )
3529
3630 logger .info (f"Dataset \" { dataset_name } \" created successfully" )
3731
@@ -45,6 +39,100 @@ def main():
4539 logger .info (f"AlluxioRuntime created and bound to dataset \" { dataset_name } \" , cache engine is now ready" )
4640
4741
42+ def create_dataset_with_jindofs (fluid_client : FluidClient ):
43+ dataset_name = "demo"
44+ try :
45+ # Mounting OSS Bucket to Jindo
46+ fluid_client .create_dataset (dataset_name ,
47+ "mybucket" , "oss://mybucket/subdir" , "/" ,
48+ options = {"fs.oss.endpoint" : "oss-cn-beijing-internal.aliyuncs.com" },
49+ cred_secret_name = "access-key" ,
50+ cred_secret_options = {
51+ "fs.oss.accessKeyId" : "fs.oss.accessKeyId" ,
52+ "fs.oss.accessKeySecret" : "fs.oss.accessKeySecret"
53+ })
54+ except Exception as e :
55+ raise RuntimeError ("f" "Failed to create dataset: {e}" )
56+
57+ logger .info (f"Dataset \" { dataset_name } \" created successfully" )
58+
59+ try :
60+ dataset = fluid_client .get_dataset (dataset_name )
61+ except Exception as e :
62+ raise RuntimeError (f"Failed to get dataset: { e } " )
63+
64+ logger .info (f"Binding JindoRuntime to dataset \" { dataset_name } \" ..." )
65+ dataset .bind_runtime (runtime_type = "jindo" , replicas = 1 , cache_medium = "MEM" , cache_capacity_GiB = 2 , wait = True )
66+ logger .info (f"JindoRuntime created and bound to dataset \" { dataset_name } \" , cache engine is now ready" )
67+
68+
69+ def create_dataset_with_juicefs (fluid_client : FluidClient ):
70+ dataset_name = "demo"
71+ try :
72+ # Setting minio as JuiceFS's backend storage and redis as JuiceFS's meta server
73+ fluid_client .create_dataset (dataset_name ,
74+ "minio" , "juicefs:///" , "/" ,
75+ options = {"bucket" : "http://minio:9000/minio/test" , "storage" : "minio" },
76+ cred_secret_name = "jfs-secret" ,
77+ cred_secret_options = {
78+ "metaurl" : "metaurl" ,
79+ "access-key" : "access-key" ,
80+ "secret-key" : "secret-key"
81+ })
82+ except Exception as e :
83+ raise RuntimeError ("f" "Failed to create dataset: {e}" )
84+
85+ logger .info (f"Dataset \" { dataset_name } \" created successfully" )
86+
87+ try :
88+ dataset = fluid_client .get_dataset (dataset_name )
89+ except Exception as e :
90+ raise RuntimeError (f"Failed to get dataset: { e } " )
91+
92+ logger .info (f"Binding JuiceFSRuntime to dataset \" { dataset_name } \" ..." )
93+ dataset .bind_runtime (runtime_type = "juicefs" , replicas = 1 , cache_medium = "MEM" , cache_capacity_GiB = 2 , wait = True )
94+ logger .info (f"JuiceFSRuntime created and bound to dataset \" { dataset_name } \" , cache engine is now ready" )
95+
96+
97+ def create_dataset_with_vineyard (fluid_client : FluidClient ):
98+ dataset_name = "vineyard"
99+ try :
100+ fluid_client .create_dataset (dataset_name )
101+ except Exception as e :
102+ raise RuntimeError ("f" "Failed to create dataset: {e}" )
103+
104+ logger .info (f"Dataset \" { dataset_name } \" created successfully" )
105+
106+ try :
107+ dataset = fluid_client .get_dataset (dataset_name )
108+ except Exception as e :
109+ raise RuntimeError (f"Failed to get dataset: { e } " )
110+
111+ logger .info (f"Binding VineyardRuntime to dataset \" { dataset_name } \" ..." )
112+ dataset .bind_runtime (runtime_type = "vineyard" , replicas = 1 , cache_medium = "MEM" , cache_capacity_GiB = 2 , wait = True )
113+ logger .info (f"VineyardRuntime created and bound to dataset \" { dataset_name } \" , cache engine is now ready" )
114+
115+
116+ # Examples for data experts like data scientists and data engineers.
117+ def main ():
118+ global logger
119+ init_logger ("fluidsdk" , logging .INFO )
120+
121+ client_config = ClientConfig ()
122+ fluid_client = FluidClient (client_config )
123+
124+ cases = {
125+ "alluxio" : create_dataset_with_alluxio ,
126+ "jindofs" : create_dataset_with_jindofs ,
127+ "juicefs" : create_dataset_with_juicefs ,
128+ "vineyard" : create_dataset_with_vineyard
129+ }
130+
131+ # Change case_name to play with different cache engines
132+ case_name = "alluxio"
133+ cases [case_name ](fluid_client )
134+
135+
48136# Example for Kubernetes experts who is familiar with YAML-like APIs.
49137def main_k8s_client ():
50138 global logger
@@ -90,7 +178,7 @@ def main_k8s_client():
90178 levels = [
91179 models .Level (
92180 mediumtype = "MEM" ,
93- volume_type = "hostPath " ,
181+ volume_type = "emptyDir " ,
94182 path = "/dev/shm" ,
95183 quota = "2Gi" ,
96184 high = "0.95" ,
0 commit comments