使用雪花连接器获取数据会引发EmptyPyArrowIterator错误

时间:2019-12-12 14:44:49

标签: python snowflake-data-warehouse

我在我的python脚本(plotly dash应用程序)中使用python雪花连接器,今天该应用程序停止工作,而无需更改代码。我尝试了几件事来找出问题所在,甚至尝试从Snowflake documentation运行示例代码,但遇到了相同的错误:

代码:

cur = conn.cursor()
try:
    cur.execute("SELECT col1, col2 FROM test_table ORDER BY col1")
    for (col1, col2) in cur:
        print('{0}, {1}'.format(col1, col2))
finally:
    cur.close()

错误:

Traceback (most recent call last):
  File "db_connection.py", line 48, in <module>
    cur.execute("SELECT col1, col2 FROM test_table ORDER BY col1")
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/snowflake/connector/cursor.py", line 580, in execute
    self._init_result_and_meta(data, _use_ijson)
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/snowflake/connector/cursor.py", line 630, in _init_result_and_meta
    self._result = ArrowResult(data, self, use_dict_result=self._use_dict_result)
  File "arrow_result.pyx", line 42, in snowflake.connector.arrow_result.ArrowResult.__init__
  File "arrow_result.pyx", line 156, in snowflake.connector.arrow_result.ArrowResult._reset
NameError: name 'EmptyPyArrowIterator' is not defined

连接已建立,我能够在数据库中创建表,但是似乎无法查询和迭代数据。

我在macOS Catalina 10.15.1snowflake-connector-python==2.1.0Python 3.7.0上。

6 个答案:

答案 0 :(得分:3)

您必须通过安装pyarrow模块

pip3 install pyarrow

雪花连接器的安装不会自动安装。

答案 1 :(得分:2)

简短版本:通过运行以下命令将雪花连接器python回滚到2.0.4版本:pipenv安装“ snowflake-connector-python〜= 2.0.4”

长版: 我检查了提交到github的连接器,然后看到它们正在添加ARROW支持。不确定为什么arrow_result.pyx无法包含EmptyPyArrowIterator,但是将它包装成一个尝试,因此它仍然可以执行。但是,当涉及到reset函数时,它找不到引用并引发异常。

答案 2 :(得分:1)

请使用Python连接器版本2.1.1

pip install雪花连接器-python == 2.1.1

OR

pip3安装雪花连接器-python == 2.1.1

答案 3 :(得分:0)

我相信您可能已经使用过 点安装雪花-用于安装雪花连接器

尝试一下, pip安装雪花连接器-python

答案 4 :(得分:0)

几个小时前,我在一次长期批处理工作中遇到了这个问题。有趣的是,同一项工作正常进行,直到突然之间它开始引发“ EmptyPyArrowIterator”异常并且不会重新启动。将snowflake-connector-python降级为2.0.4似乎已经解决了该问题。

答案 5 :(得分:0)

有关其他影响的更多详细信息,请参阅下面的发行文档。

https://docs.snowflake.net/manuals/release-notes/2019-12.html#python-connector-2-1-0-jdbc-driver-3-11-0-support-for-internal-arrow-format

要修复,我已在用户级别安装pyarrow

pip3 install pyarrow --user