The Vertica Forum recently got a makeover! Let us know what you think by filling out this short, anonymous survey.
Please take this survey to help us learn more about how you use third party tools. Your input is greatly appreciated!
Unable to use TransformFunction in vertica_sdk.
What i am trying to do is execute vertica's string tokenizer example which is written in python.
Here is the link to the said example:https://www.vertica.com/docs/9.2.x/HTML/Content/Authoring/ExtendingVertica/UDx/TransformFunctions/Python/ExampleStringTokenizer.htm?TocPath=Extending Vertica|Developing%20User-Defined%20Extensions%20(UDxs)|Transform%20Functions%20(UDTFs)|Python%20API|_____2
This is what my code looks like
import vertica_sdk class StringTokenizer(vertica_sdk.TransformFunction): """ Transform function which tokenizes its inputs. For each input string, each of the whitespace-separated tokens of that string is produced as output. """ def processPartition(self, server_interface, input, output): while True: for token in input.getString(0).split(): output.setString(0, token) output.next() if not input.next(): break class StringTokenizerFactory(vertica_sdk.TransformFunctionFactory): def getPrototype(self, server_interface, arg_types, return_type): arg_types.addVarchar() return_type.addVarchar() def getReturnType(self, server_interface, arg_types, return_type): return_type.addColumn(arg_types.getColumnType(0), "tokens") def createTransformFunction(cls, server_interface): return StringTokenizer()
This is what im getting as my output when I execute the command
create library sampy as '/home/dbadmin/udx/tokenize.py' language 'Python';
ROLLBACK 2175: An error occurred when loading library file on node v_prmtest_node0001, message: Failure in UDx RPC call InvokeCheckLibrary(): Error calling setupExecContext() in User Defined Object [] at [/scratch_a/release/svrtar19690/vbuild/vertica/OSS/UDxFence/PythonInterface.cpp:168], error code: 0, message: Error [/scratch_a/release/svrtar19690/vbuild/vertica/OSS/UDxFence/PythonInterface.cpp:204] function ['import'] (Python error type [<class 'AttributeError'>]) Traceback (most recent call last): File "/home/dbadmin/PRMTEST/v_prmtest_node0001_catalog/Libraries/02d86d505e41731d36151e9e9da31afc00b0000000561680/sampy_02d86d505e41731d36151e9e9da31afc00b0000000561680.py", line 2, in <module> class StringTokenizer(vertica_sdk.TransformFunction): AttributeError: module 'vertica_sdk' has no attribute 'TransformFunction'
Please help and thanks in advance.
0
Answers
What is your vertica version? we started supporting python UDx recently.