2
2
3
3
// Import classes:
4
4
import io .tiledb .cloud .TileDBClient ;
5
+ import io .tiledb .cloud .TileDBUDF ;
5
6
import io .tiledb .cloud .rest_api .ApiClient ;
6
7
import io .tiledb .cloud .rest_api .ApiException ;
7
8
import io .tiledb .cloud .TileDBLogin ;
8
9
import io .tiledb .cloud .rest_api .api .GroupsApi ;
9
10
import io .tiledb .cloud .rest_api .api .ArrayApi ;
10
- import io .tiledb .cloud .rest_api .model .ArrayInfo ;
11
- import io .tiledb .cloud .rest_api .model .ArrayInfoUpdate ;
12
- import io .tiledb .cloud .rest_api .model .ArraySchema ;
13
- import io .tiledb .cloud .rest_api .model .ArrayType ;
14
- import io .tiledb .cloud .rest_api .model .Attribute ;
15
- import io .tiledb .cloud .rest_api .model .Datatype ;
16
- import io .tiledb .cloud .rest_api .model .Dimension ;
17
- import io .tiledb .cloud .rest_api .model .DimensionTileExtent ;
18
- import io .tiledb .cloud .rest_api .model .Domain ;
19
- import io .tiledb .cloud .rest_api .model .DomainArray ;
20
- import io .tiledb .cloud .rest_api .model .Filter ;
21
- import io .tiledb .cloud .rest_api .model .FilterPipeline ;
22
- import io .tiledb .cloud .rest_api .model .FilterType ;
23
- import io .tiledb .cloud .rest_api .model .GroupBrowserData ;
24
- import io .tiledb .cloud .rest_api .model .Layout ;
11
+ import io .tiledb .cloud .rest_api .model .*;
25
12
13
+ import java .math .BigDecimal ;
14
+ import java .util .ArrayList ;
15
+ import java .util .Arrays ;
16
+ import java .util .HashMap ;
26
17
import java .util .List ;
27
18
28
19
public class Examples
@@ -45,6 +36,9 @@ public static void main(String[] args) {
45
36
ArrayApi apiInstance = new ArrayApi (tileDBClient .getApiClient ());
46
37
47
38
// Uncomment to run whichever example you want
39
+ // runGenericUDF(tileDBClient);
40
+ // runArrayUDF(tileDBClient);
41
+ // runMultiArrayUDF(tileDBClient);
48
42
// getArraySchema(apiInstance);
49
43
// createArray(apiInstance);
50
44
// registerArray(apiInstance);
@@ -54,6 +48,96 @@ public static void main(String[] args) {
54
48
// deregisterArray(apiInstance);
55
49
}
56
50
51
+ /**
52
+ * Runs a generic UDF
53
+ * @param tileDBClient
54
+ */
55
+ private static void runGenericUDF (TileDBClient tileDBClient ){
56
+ TileDBUDF tileDBUDF = new TileDBUDF (tileDBClient , "TileDB-Inc" );
57
+ GenericUDF genericUDF = new GenericUDF ();
58
+ genericUDF .setUdfInfoName ("TileDB-Inc/args-udf" );
59
+ HashMap <String ,Object > arguments = new HashMap <>();
60
+ arguments .put ("arg1" , "a1" );
61
+ arguments .put ("arg2" , "a2" );
62
+ System .out .println (tileDBUDF .executeGeneric (genericUDF , arguments )); //could be JSON or Arrow
63
+ }
64
+
65
+ /**
66
+ * Runs an array UDF on a TileDB Arrray
67
+ * @param tileDBClient
68
+ */
69
+ public static void runArrayUDF (TileDBClient tileDBClient ){
70
+ TileDBUDF tileDBUDF = new TileDBUDF (tileDBClient , "TileDB-Inc" );
71
+ ArrayList <BigDecimal > range1 = new ArrayList <>();
72
+ range1 .add (BigDecimal .valueOf (1 ));
73
+ range1 .add (BigDecimal .valueOf (4 ));
74
+
75
+ ArrayList <BigDecimal > range2 = new ArrayList <>();
76
+ range2 .add (BigDecimal .valueOf (1 ));
77
+ range2 .add (BigDecimal .valueOf (4 ));
78
+
79
+ QueryRanges queryRanges = new QueryRanges ();
80
+ queryRanges .addRangesItem (range1 );
81
+ queryRanges .addRangesItem (range2 );
82
+
83
+
84
+ HashMap <String ,Object > argumentsForArrayUDF = new HashMap <>();
85
+ argumentsForArrayUDF .put ("attr" , "rows" );
86
+ argumentsForArrayUDF .put ("scale" , 9 );
87
+
88
+ MultiArrayUDF multiArrayUDF = new MultiArrayUDF ();
89
+ multiArrayUDF .setUdfInfoName ("TileDB-Inc/array-udf" );
90
+ multiArrayUDF .setRanges (queryRanges );
91
+ System .out .println (tileDBUDF .executeSingleArray (multiArrayUDF , argumentsForArrayUDF , "tiledb://TileDB-Inc/quickstart_sparse" , "TileDB-Inc" ));
92
+ }
93
+
94
+ /**
95
+ * Runs a multi-array UDF on multiple TileDB arrays
96
+ * @param tileDBClient
97
+ */
98
+ public static void runMultiArrayUDF (TileDBClient tileDBClient ){
99
+ TileDBUDF tileDBUDF = new TileDBUDF (tileDBClient , "TileDB-Inc" );
100
+
101
+ ArrayList <BigDecimal > range1 = new ArrayList <>();
102
+ range1 .add (BigDecimal .valueOf (1 ));
103
+ range1 .add (BigDecimal .valueOf (4 ));
104
+
105
+ ArrayList <BigDecimal > range2 = new ArrayList <>();
106
+ range2 .add (BigDecimal .valueOf (1 ));
107
+ range2 .add (BigDecimal .valueOf (4 ));
108
+
109
+ QueryRanges queryRanges = new QueryRanges ();
110
+ queryRanges .addRangesItem (range1 );
111
+ queryRanges .addRangesItem (range2 );
112
+
113
+ MultiArrayUDF multiArrayUDF = new MultiArrayUDF ();
114
+ multiArrayUDF .setUdfInfoName ("TileDB-Inc/multi-array-udf" );
115
+
116
+ List <UDFArrayDetails > arrays = new ArrayList <>();
117
+
118
+ //array1
119
+ UDFArrayDetails array1 = new UDFArrayDetails ();
120
+ array1 .setUri ("tiledb://TileDB-Inc/dense-array" );
121
+ array1 .setRanges (queryRanges );
122
+ array1 .setBuffers (Arrays .asList ("rows" , "cols" , "a1" ));
123
+ arrays .add (array1 );
124
+
125
+ //array2
126
+ UDFArrayDetails array2 = new UDFArrayDetails ();
127
+ array2 .setUri ("tiledb://TileDB-Inc/quickstart_dense" );
128
+ array2 .setRanges (queryRanges );
129
+ array2 .setBuffers (Arrays .asList ("rows" , "cols" , "a" ));
130
+ arrays .add (array2 );
131
+
132
+ multiArrayUDF .setArrays (arrays );
133
+
134
+ HashMap <String ,Object > arguments = new HashMap <>();
135
+ arguments .put ("attr1" , "a1" );
136
+ arguments .put ("attr2" , "a" );
137
+
138
+ System .out .println (tileDBUDF .executeMultiArray (multiArrayUDF , arguments ));
139
+ }
140
+
57
141
/**
58
142
* Deregister an array
59
143
* @param apiInstance
@@ -239,3 +323,4 @@ public static void registerArray(ArrayApi arrayApi){
239
323
}
240
324
}
241
325
}
326
+
0 commit comments