gravita
A go package for Redshift Lambda UDF Multiplexer
Install
go get -u github.com/mashiike/gravitaExamples
most simple case:
func main() {
mux := gravita.NewMux()
mux.HandleFunc("*", func(ctx context.Context, args [][]interface{}) ([]interface{}, error) {
ret := make([]interface{}, 0, len(args))
// anything do
return ret, nil
})
lambda.Start(mux.HandleLambdaEvent)
}If each row is independent, can also do the following:
func main() {
mux := gravita.NewMux()
mux.HandleRowFunc("*", func(_ context.Context, args []interface{}) (interface{}, error) {
return fmt.Sprint(args...), nil
})
lambda.Start(mux.HandleLambdaEvent)
}If you want to do batch processing, you can do the following:
func main() {
mux := gravita.NewMux()
handler := gravita.NewBatchProcessHandler(
100, //batchSize
gravita.LambdaUDFHandlerFunc(func(ctx context.Context, args [][]interface{}) ([]interface{}, error) {
//Called in small batches, len(args) == batchSize
ret := make([]interface{}, 0, len(args))
// anything do
return ret, nil
}),
)
mux.Handle("*", handler)
lambda.Start(mux.HandleLambdaEvent)
}LICENSE
MIT License
Copyright (c) 2022 IKEDA Masashi
On this page
Languages
Go100.0%
Latest Release
v0.1.0December 15, 2022MIT License
Created March 24, 2022
Updated March 25, 2022