The Operators and Functions Support Progress

Gluten is still under active development. Here is a list of supported operators and functions.

Since the same function may have different semantics between Presto and Spark, Velox implement the functions in Presto category, if we note a different semantics from Spark, then the function is implemented in Spark category. So Gluten will first try to find function in Velox’s spark category, if a function isn’t implemented then refer to Presto category.

The total number of functions in Spark3.3 is 387, Gluten supports 189 of them.

We use some notations to describe the supporting status of operators/functions in the tables below, they are:

Value Description
S Supported. Gluten or Velox supports fully.
S* Mark for foldable expression that will be converted to alias after spark’s optimization.
[Blank Cell] Not applicable case or needs to confirm.
PS Partial Support. Velox only partially supports it.
NS Not Supported. Velox backend does not support it.

And also some notations for the function implementation’s restrictions:

Value Description
Mismatched Some functions are implemented by Velox, but have different semantics from Apache Spark, we mark them as “Mismatched”.
ANSI OFF Gluten doesn’t support ANSI mode. If it is enabled, Gluten will fall back to Vanilla Spark.

Operator Map

Gluten supports 28 operators (Drag to right to see all data types)

Executor Description Gluten Name Velox Name BOOLEAN BYTE SHORT INT LONG FLOAT DOUBLE STRING NULL BINARY ARRAY MAP STRUCT(ROW) DATE TIMESTAMP DECIMAL CALENDAR UDT
FileSourceScanExec Reading data from files, often from Hive tables FileSourceScanExecTransformer TableScanNode S S S S S S S S S S NS NS NS S NS NS NS NS
BatchScanExec The backend for most file input BatchScanExecTransformer TableScanNode S S S S S S S S S S NS NS NS S NS NS NS NS
FilterExec The backend for most filter statements FilterExecTransformer FilterNode S S S S S S S S S S NS NS NS S NS NS NS NS
ProjectExec The backend for most select, withColumn and dropColumn statements ProjectExecTransformer ProjectNode S S S S S S S S S S NS NS NS S NS NS NS NS
HashAggregateExec The backend for hash based aggregations HashAggregateBaseTransformer AggregationNode S S S S S S S S S S NS NS NS S NS NS NS NS
BroadcastHashJoinExec Implementation of join using broadcast data BroadcastHashJoinExecTransformer HashJoinNode S S S S S S S S S S NS NS NS S NS NS NS NS
ShuffledHashJoinExec Implementation of join using hashed shuffled data ShuffleHashJoinExecTransformer HashJoinNode S S S S S S S S S S NS NS NS S NS NS NS NS
SortExec The backend for the sort operator SortExecTransformer OrderByNode S S S S S S S S S S NS NS NS S NS NS NS NS
SortMergeJoinExec Sort merge join, replacing with shuffled hash join SortMergeJoinExecTransformer MergeJoinNode S S S S S S S S S S NS NS NS S NS NS NS NS
WindowExec Window operator backend WindowExecTransformer WindowNode S S S S S S S S S S NS NS NS S NS NS NS NS
GlobalLimitExec Limiting of results across partitions LimitTransformer LimitNode S S S S S S S S S S NS NS NS S NS NS NS NS
LocalLimitExec Per-partition limiting of results LimitTransformer LimitNode S S S S S S S S S S NS NS NS S NS NS NS NS
ExpandExec The backend for the expand operator ExpandExecTransformer GroupIdNode S S S S S S S S S S NS NS NS S NS NS NS NS
UnionExec The backend for the union operator UnionExecTransformer N S S S S S S S S S S NS NS NS S NS NS NS NS
DataWritingCommandExec Writing data Y TableWriteNode S S S S S S S S S S S NS S S NS S NS NS
CartesianProductExec Implementation of join using brute force CartesianProductExecTransformer NestedLoopJoinNode S S S S S S S S S S NS NS NS S NS NS NS NS
ShuffleExchangeExec The backend for most data being exchanged between processes ColumnarShuffleExchangeExec ExchangeNode NS NS NS NS NS NS NS NS NS NS NS NS NS NS NS NS NS NS
  The unnest operation expands arrays and maps into separate columns N UnnestNode NS NS NS NS NS NS NS NS NS NS NS NS NS NS NS NS NS NS
  The top-n operation reorders a dataset based on one or more identified sort fields as well as a sorting order N TopNNode NS NS NS NS NS NS NS NS NS NS NS NS NS NS NS NS NS NS
  The partitioned output operation redistributes data based on zero or more distribution fields N PartitionedOutputNode NS NS NS NS NS NS NS NS NS NS NS NS NS NS NS NS NS NS
  The values operation returns specified data N ValuesNode NS NS NS NS NS NS NS NS NS NS NS NS NS NS NS NS NS NS
  A receiving operation that merges multiple ordered streams to maintain orderedness N MergeExchangeNode NS NS NS NS NS NS NS NS NS NS NS NS NS NS NS NS NS NS
  An operation that merges multiple ordered streams to maintain orderedness N LocalMergeNode NS NS NS NS NS NS NS NS NS NS NS NS NS NS NS NS NS NS
  Partitions input data into multiple streams or combines data from multiple streams into a single stream N LocalPartitionNode NS NS NS NS NS NS NS NS NS NS NS NS NS NS NS NS NS NS
  The enforce single row operation checks that input contains at most one row and returns that row unmodified N EnforceSingleRowNode NS NS NS NS NS NS NS NS NS NS NS NS NS NS NS NS NS NS
  The assign unique id operation adds one column at the end of the input columns with unique value per row N AssignUniqueIdNode NS NS NS NS NS NS NS NS NS NS NS NS NS S S S S S
ReusedExchangeExec A wrapper for reused exchange to have different output ReusedExchangeExec N                                    
CollectLimitExec Reduce to single partition and apply limit N N                                    
BroadcastExchangeExec The backend for broadcast exchange of data Y Y S S S S S S S S S S NS NS NS S NS S NS NS
ObjectHashAggregateExec The backend for hash based aggregations supporting TypedImperativeAggregate functions N N                                    
SortAggregateExec The backend for sort based aggregations N N                                    
CoalesceExec Reduce the partition numbers CoalesceExecTransformer N                                    
GenerateExec The backend for operations that generate more output rows than input rows like explode GenerateExecTransformer UnnestNode                                    
RangeExec The backend for range operator N N                                    
SampleExec The backend for the sample operator N N                                    
SubqueryBroadcastExec Plan to collect and transform the broadcast key values Y Y S S S S S S S S S S NS NS NS S NS S NS NS
TakeOrderedAndProjectExec Take the first limit elements as defined by the sortOrder, and do projection if needed Y Y S S S S S S S S S S NS NS NS S NS S NS NS
CustomShuffleReaderExec A wrapper of shuffle query stage N N                                    
InMemoryTableScanExec Implementation of InMemory Table Scan Y Y                                    
BroadcastNestedLoopJoinExec Implementation of join using brute force. Full outer joins and joins where the broadcast side matches the join side (e.g.: LeftOuter with left broadcast) are not supported BroadcastNestedLoopJoinExecTransformer NestedLoopJoinNode S S S S S S S S S S NS NS NS S NS NS NS NS
AggregateInPandasExec The backend for an Aggregation Pandas UDF, this accelerates the data transfer between the Java process and the Python process N N                                    
ArrowEvalPythonExec The backend of the Scalar Pandas UDFs. Accelerates the data transfer between the Java process and the Python process N N                                    
FlatMapGroupsInPandasExec The backend for Flat Map Groups Pandas UDF, Accelerates the data transfer between the Java process and the Python process N N                                    
MapInPandasExec The backend for Map Pandas Iterator UDF. Accelerates the data transfer between the Java process and the Python process N N                                    
WindowInPandasExec The backend for Window Aggregation Pandas UDF, Accelerates the data transfer between the Java process and the Python process N N                                    
HiveTableScanExec The Hive table scan operator. Column and partition pruning are both handled Y Y                                    
InsertIntoHiveTable Command for writing data out to a Hive table Y Y                                    
Velox2Row Convert Velox format to Row format Y Y S S S S S S S S NS S NS NS NS S S NS NS NS
Velox2Arrow Convert Velox format to Arrow format Y Y S S S S S S S S NS S S S S S NS S NS NS

Function support

Gluten supports 199 functions. (Drag to right to see all data types)

Spark Functions Velox/Presto Functions Velox/Spark functions Gluten Restrictions BOOLEAN BYTE SHORT INT LONG FLOAT DOUBLE DATE TIMESTAMP STRING DECIMAL NULL BINARY CALENDAR ARRAY MAP STRUCT UDT
!   not S   S S S S S S S     S                
!= neq   S   S S S S S S S     S                
% mod remainder S ANSI OFF   S S S S S                        
& bitwise_and bitwise_and S                                      
* multiply multiply S ANSI OFF   S S S S S                        
+ plus add S ANSI OFF   S S S S S                        
- minus subtract S ANSI OFF   S S S S S                        
/ divide divide S ANSI OFF   S S S S S                        
< lt lessthan S   S S S S S S S     S                
<= lte lessthanorequa S   S S S S S S S     S                
<=>   equalnullsafe S                                      
<> neq notequalto S   S S S S S S S     S                
=     S                                      
== eq equalto S   S S S S S S S     S                
> gt greaterthan S   S S S S S S S     S                
>= gte greaterthanorequal S   S S S S S S S     S                
^ bitwise_xor   S       S S S                          
| bitwise_or bitwise_or S       S S S                          
||     S                                      
~ bitwise_not   S       S S S                          
and     S   S S S S S S S     S                
between between between S   S S S S S S S S   S                
bit_and bitwise_and_agg   S     S S S S S                        
bit_count bit_count bit_count S   S S S S S                          
bit_get   bit_get S     S S S S                          
bit_or     S                                      
bit_xor   bit_xor S                                      
case     S                                      
div                                            
getbit                                            
if     S                                      
ifnull                                            
in   in S       S S S S S S S S                
isnan is_nan isnan S             S S                      
isnotnull   isnotnull S   S S S S S S S     S                
isnull is_null isnull S   S S S S S S S     S                
mod mod remainder S                                      
negative negate unaryminus                                        
not   not S   S S S S S S S S                    
nullif     S                                      
or     S                                      
positive     S                                      
when     S                                      
ascii   ascii S                     S                
base64                                            
bin   bin                                        
bit_length     S                                      
btrim     S                                      
char, chr chr chr S                     S                
char_length/character_length length length S                     S                
character_lengt/char_length length length S                     S                
chr, char chr chr S                     S                
concat concat concat S                     S                
concat_ws                                            
contains   contains                                        
decode                                            
elt                                            
encode                                            
endswith   endsWith                                        
find_in_set     S                     S                
format_number                                            
format_string                                            
initcap                                            
instr   instr S                     S                
lcase, lower lower lower S                     S                
left     S                     S                
length length length S                     S                
levenshtein   levenshtein S                                      
locate strpos   S Mismatched                   S                
lower lower lower S                     S                
lpad lpad   S                     S                
ltrim ltrim ltrim S                     S                
octet_length                                            
overlay   overlay S                                      
parse_url                                            
position strpos                                          
printf                                            
repeat   repeat S                                      
replace replace replace S                     S                
reverse reverse   S                     S                
right                                            
rpad rpad   S                     S                
rtrim rtrim rtrim S                     S                
sentences                                            
soundex   soundex S                                      
space                                            
split split split S Mismatched                                    
split_part split_part     Mismatched                                    
startswith   startsWith                                        
substr, substring substr substring S                     S                
substring, substr substr substring S                     S                
substring_index   substring_index S                                      
translate                                            
trim trim trim S                     S                
ucase, upper upper upper S                     S                
unbase64                                            
unhex     S                                      
upper, ucase upper upper S                     S                
xpath                                            
xpath_boolean                                            
xpath_double                                            
xpath_float                                            
xpath_int                                            
xpath_long                                            
xpath_number                                            
xpath_short                                            
xpath_string                                            
like like   S                     S                
regexp   rlike S Lookaround unsupported                   S                
regexp_extract regexp_extract regexp_extract S Lookaround unsupported                   S                
regexp_extract_all regexp_extract_all   S Lookaround unsupported                   S                
regexp_like regexp_like rlike S Lookaround unsupported                   S                
regexp_replace regexp_replace   S Lookaround unsupported                   S                
rlike   rlike S Lookaround unsupported                   S                
abs abs abs S ANSI OFF   S S S S S S                      
acos acos   S     S S S S S S                      
acosh   acosh S     S S S S S S                      
asin asin   S     S S S S S S                      
asinh   asinh S     S S S S S S                      
atan atan   S     S S S S S S                      
atan2 atan2   S     S S S S S S                      
atanh   atanh S     S S S S S S                      
bround                                            
cbrt cbrt   S     S S S S S S                      
ceil ceil ceil S     S S S S S S                      
ceiling ceiling   S     S S S S S S                      
conv                                            
cos cos   S     S S S S S S                      
cosh cosh   S     S S S S S S                      
cot                                            
degrees degrees   S     S S S S S S                      
e e   S     S S S S S S                      
exp exp exp S     S S S S S S                      
expm1     S                                      
factorial                                            
floor floor floor S     S S S S S S                      
hex     S           S         S     S          
hypot                                            
ln ln   S     S S S S S S                      
log ln log S     S S S S S S                      
log10 log10   S     S S S S S S                      
log1p                                            
log2 log2   S     S S S S S S                      
pi pi   S     S S S S S S                      
pmod   pmod S ANSI OFF   S S S S S                        
pow, power pow,power power         S S S S S                      
power, pow power,pow power S     S S S S S S                      
radians radians   S     S S S S S S                      
rand rand rand S                                      
rand rand rand                                        
random random   S                                      
rint   rint S                                      
round round round S     S S S S S S                      
shiftleft bitwise_left_shift shiftleft S     S S S S S S                      
shiftright bitwise_right_shift shiftright S     S S S S S S                      
shiftrightunsigned                                            
sign, signum sign   S     S S S S S S                      
signum, sign sign   S     S S S S S S                      
sin sin   S     S S S S S S                      
sinh   sinh                                        
sqrt sqrt   S     S S S S S S                      
tan tan   S     S S S S S S                      
tanh tanh   S     S S S S S S                      
width_bucket width_bucket width_bucket S                                      
array   array S                               S      
aggregate aggregate reduce S                               S      
array_contains   array_contains S                                      
array_distinct array_distinct   S                               S      
array_except array_except   S                               S      
array_intersect array_intersect array_intersect S                                      
array_join array_join   S                                      
array_max array_max   S                                      
array_min array_min   S                                      
array_position array_position   S                               S      
array_remove array_remove   S                                      
array_repeat     S   S S S S S S S S S S S              
array_sort array_sort array_sort S                                      
array_union                                            
arrays_overlap array_overlap S                                        
arrays_zip zip   S                                      
cardinality cardinality                                          
element_at element_at element_at S                               S S    
exists any_match   S                                      
explode, explode_outer                                            
explode_outer, explode                                            
filter filter filter PS                                      
forall all_match   S                                      
flatten flatten flatten S                                      
map map map S                                      
map_concat map_concat                                          
map_entries map_entries                                          
map_filter map_filter map_filter                                        
get_map_value   element_at S                                 S    
map_from_arrays   map_from_arrays S                                 S    
map_from_entries map_from_entries                                          
map_keys map_keys map_keys S                                      
map_values map_values map_values S                                 S    
map_zip_with map_zip_with   S                                 S    
named_struct,struct row_construct named_struct S                                   S  
posexplode_outer,posexplode                                            
sequence                                            
shuffle shuffle shuffle S                                      
size   size S                                      
array_size     S                                      
slice slice                                          
sort_array   sort_array S                                      
str_to_map     S                                      
transform transform transofrm                                        
transform_keys transform_keys   PS                                      
transform_values transform_values   PS                                      
zip_with zip_with   S                                      
add_months     S                                      
current_date     S*                                      
current_timestamp     S*                                      
current_timezone     S*                                      
date date   S                                      
date_add date_add date_add S     S S S       S S                  
date_format date_format   S         S         S                  
date_from_unix_date     S                                      
date_part                                            
date_sub     S                                      
date_trunc date_trunc                                          
datediff date_diff   S                 S S                  
day day   S                 S S                  
dayofmonth day_of_month   S                 S S                  
dayofweek day_of_week,dow   S                 S S                  
dayofyear day_of_year,doy   S                 S S                  
extract                       S S                  
from_unixtime from_unixtime   S           S                          
from_utc_timestamp   from_utc_timestamp S                                      
hour hour   S                   S                  
last_day   last_day S                                      
make_date   make_date S                                      
make_dt_interval                                            
make_interval                                            
make_timestamp                                            
make_ym_interval                                            
minute minute   S                                      
month month   S                 S S                  
months_between                                            
next_day     S                 S                    
now     S                 S S                  
quarter quarter   S                 S S                  
second second   S                                      
session_window                                            
timestamp                                            
timestamp_micros   timestamp_micros S                                      
timestamp_millis   timestamp_millis S                                      
timestamp_seconds                                            
to_date     S                 S S                  
to_timestamp                                            
to_unix_timestamp to_unixtime to_unix_timestamp S                                      
to_utc_timestamp                                            
trunc                                            
unix_timestamp   unix_timestamp                                        
unix_seconds   unix_seconds S                                      
unix_millis   unix_millis S                                      
unix_micros   unix_micros S                                      
weekday     S                 S                    
weekofyear week,week_of_year   S                                      
window                                            
year year year S                 S S                  
aggregate   aggregate S                                      
any                                            
approx_count_distinct approx_distinct   S   S S S S S S S S   S                
approx_percentile                                            
avg avg   S ANSI OFF   S S S S S                        
bool_and                                            
bool_or                                            
collect_list     S                                      
collect_set     S                                      
corr corr   S       S S S S S                      
count count   S       S S S S S                      
count_if count_if         S S S S S                        
count_min_sketch                                            
covar_pop covar_pop   S     S S S S S                        
covar_samp covar_samp   S     S S S S S                        
every                                            
first   first S                                      
first_value   first_value S                                      
grouping                                            
grouping_id                                            
kurtosis kurtosis kurtosis S       S S S S S                      
last   last S                                      
last_value   last_value S                                      
max max   S       S S S S S                      
max_by     S                                      
mean avg   S ANSI OFF                                    
min min   S       S S S S S                      
min_by     S                                      
regr_avgx regr_avgx regr_avgx S       S S S S S                      
regr_avgy regr_avgy regr_avgy S       S S S S S                      
regr_count regr_count regr_count S       S S S S S                      
regr_r2 regr_r2 regr_r2 S       S S S S S                      
regr_intercept regr_intercept regr_intercept S       S S S S S                      
regr_slope regr_slope regr_slope S       S S S S S                      
regr_sxy regr_sxy regr_sxy S       S S S S S                      
regr_sxx regr_sxx regr_sxx S       S S S S S                      
regr_syy regr_syy regr_syy S       S S S S S                      
skewness skewness skewness S       S S S S S                      
some                                            
std,stddev stddev   S       S S S S S                      
stddev,std stddev   S       S S S S S                      
stddev_pop stddev_pop   S     S S S S S                        
stddev_samp stddev_samp   S       S S S S S                      
sum sum   S ANSI OFF   S S S S S                        
var_pop var_pop   S     S S S S S                        
var_samp var_samp   S     S S S S S                        
variance variance   S     S S S S S                        
cume_dist cume_dist   S                                      
dense_rank dense_rank   S                                      
lag     S                                      
lead     S                                      
nth_value nth_value nth_value PS                                      
ntile ntile ntile S                                      
percent_rank percent_rank   S                                      
rank rank   S                                      
row_number row_number   S       S S S                          
from_csv                                            
from_json                                            
get_json_object json_extract_scalar get_json_object S                                   S  
json_array_length json_array_length   S                                   S  
json_tuple                                            
schema_of_csv                                            
schema_of_json                                            
to_csv                                            
to_json                                            
assert_true     S                                      
coalesce     PS                                      
crc32 crc32   S                     S                
current_user     S*                     S                
current_catalog     S                                      
current_database     S                                      
greatest greatest greatest S           S S S S S                  
hash hash hash S   S S S S S S S                      
inline                                            
inline_outer                                            
input_file_name     S                                      
input_file_block_length     S                                      
input_file_block_start     S                                      
java_method                                            
least least least S           S S S S S                  
md5 md5   S     S                                
monotonically_increasing_id     S                                      
nanvl     S                                      
nvl                                            
nvl2                                            
raise_error   raise_error S                                      
reflect                                            
sha     S                     S                
sha1 sha1 sha1 S                     S                
sha2   sha2 S                     S                
spark_partition_id     S                                      
stack     S   S S S S S S S S S S S S S S S S S S
xxhash64 xxhash64 xxhash64                                        
uuid uuid uuid S                                      
rand rand rand S                                      
try_add     S                                      
try_substract     S                                      
try_multiply     S                                      
try_divide     S                                      

Back to top

Copyright © 2024 The Apache Software Foundation, Licensed under the Apache License, Version 2.0. Apache Gluten, Gluten, Apache, the Apache feather logo, and the Apache Gluten project logo are either registered trademarks or trademarks of the Apache Software Foundation in the United States and/or other countries.

Apache Gluten is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by the Apache Incubator. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of the completeness or stability of the code, it does indicate that the project has yet to be fully endorsed by the ASF.

Privacy Policy