gpt4 book ai didi

python - 无法在vertica_sdk中使用TransformFunction

转载 作者:行者123 更新时间:2023-12-01 08:20:41 25 4
gpt4 key购买 nike

我想做的是执行vertica的字符串标记器示例,它是用python编写的。

以下是上述示例的链接:https://www.vertica.com/docs/9.2.x/HTML/Content/Authoring/ExtendingVertica/UDx/TransformFunctions/Python/ExampleStringTokenizer.htm?TocPath=Extending Vertica|开发%20用户定义%20扩展%20(UDxs)|转换%20函数%20(UDTF)|Python%20API|_____2

这就是我的代码的样子

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()

这就是我执行命令时得到的输出。

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'

最佳答案

vertica 版本 9 中存在转换函数。

我无法执行代码的原因是因为我使用的是 Vertica 版本 8。Python 用户定义的转换函数仅在 Vertica 版本 9 或更高版本中受支持。可以使用 Java、C++ 或 R 为 Vertica 8 编写 UDTF。

关于python - 无法在vertica_sdk中使用TransformFunction,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54668950/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com