带有Oracle(cx_Oracle)数据库的Dask错误:DPI1062:意外的OCI返回值

2024-04-19 11:53:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用Dask来加速通过数据帧传递的函数-关于我正在做什么的更具体信息可以在这里找到:Previous Question

无论哪种方式,我都在使用cx_Oracle将数据捕获到Python中,而且我从未遇到过cx_Oracle的任何问题。我的函数和Dask.compute()是:

def unicodeHandle(datai):
    for i, row in enumerate(datai['LDTEXT']):
        print(i)
        try:
            text = row.read()
            text.strip().split('[\W_]+') 
            print(text)
        except UnicodeDecodeError as e:
            datai.drop(i, inplace=True)
            print('Error at index {}: {!r}'.format(i, row))
            print(e)
    return datai

partitions = 7 # cpu_cores - 1
ddf = dd.from_pandas(datai, npartitions=partitions)
print(ddf)
dask = ddf.map_partitions(lambda ddf: unicodeHandle(ddf), meta=pd.DataFrame).compute()

ddf看起来应该如此。但是,当我运行dask = ddf.map_partitions时,我得到:


  File "<ipython-input-4-f8c37d88e1f6>", line 7, in unicodeHandle
    text = row.read()

DatabaseError: DPI-1062: unexpected OCI return value 99 in function dpiLob_readBytes

网上没有关于这个错误的消息。有人知道是什么导致了这个错误吗?或者,是否有任何文档?我发现最多的是Github上的实际代码行

它只是在我开始尝试实现Dask时启动的,但它似乎更像是一个DB错误而不是Dask错误


Tags: 数据函数textin错误daskroworacle