首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Ibis python将数据插入到impala表中

使用Ibis python将数据插入到impala表中
EN

Stack Overflow用户
提问于 2017-11-23 06:54:07
回答 2查看 1.7K关注 0票数 0

我正在尝试将df插入到ibis创建的带分区的impala表中。我在远程内核上运行,在Windows10机器上使用spyder 3.2.4,在运行CentOS的边缘节点机器上使用Python3.6.2。

我得到以下错误:

代码语言:javascript
复制
Writing DataFrame to temporary file
Writing CSV to: /tmp/ibis/pandas_0032f9dd1916426da62c8b4d8f4dfb92/0.csv
Traceback (most recent call last):

File "/usr/local/lib/python3.6/site-packages/IPython/core/interactiveshell.py", line 2910, in run_code
exec(code_obj, self.user_global_ns, self.user_ns)

File "", line 1, in 
insert = target_table.insert(df3)

File "/usr/local/lib/python3.6/site-packages/ibis/impala/client.py", line 1674, in insert
writer, expr = write_temp_dataframe(self._client, obj)

File "/usr/local/lib/python3.6/site-packages/ibis/impala/pandas_interop.py", line 225, in write_temp_dataframe
return writer, writer.delimited_table(path)

File "/usr/local/lib/python3.6/site-packages/ibis/impala/pandas_interop.py", line 188, in delimited_table
schema = self.get_schema()

File "/usr/local/lib/python3.6/site-packages/ibis/impala/pandas_interop.py", line 184, in get_schema
return pandas_to_ibis_schema(self.df)

File "/usr/local/lib/python3.6/site-packages/ibis/impala/pandas_interop.py", line 219, in pandas_to_ibis_schema
return schema(pairs)

File "/usr/local/lib/python3.6/site-packages/ibis/expr/api.py", line 105, in schema
return Schema.from_tuples(pairs)

File "/usr/local/lib/python3.6/site-packages/ibis/expr/datatypes.py", line 109, in from_tuples
return Schema(names, types)

File "/usr/local/lib/python3.6/site-packages/ibis/expr/datatypes.py", line 55, in init
self.types = [validate_type(typ) for typ in types]

File "/usr/local/lib/python3.6/site-packages/ibis/expr/datatypes.py", line 55, in 
self.types = [validate_type(typ) for typ in types]

File "/usr/local/lib/python3.6/site-packages/ibis/expr/datatypes.py", line 1040, in validate_type
return TypeParser(t).parse()

File "/usr/local/lib/python3.6/site-packages/ibis/expr/datatypes.py", line 901, in parse
t = self.type()

File "/usr/local/lib/python3.6/site-packages/ibis/expr/datatypes.py", line 1033, in type
raise SyntaxError('Type cannot be parsed: {}'.format(self.text))

File "", line unknown
SyntaxError: Type cannot be parsed: integer
EN

回答 2

Stack Overflow用户

发布于 2017-11-29 09:36:19

由于hadoop系统的结构和安全性的原因,出现了错误。Ibis包尝试在__ibis_tmp & /tmp/ibis/中分别创建temp_db和temp_hdfs_location。因为在我们的系统中,除了root/system admin之外,任何用户都不能访问默认位置...从/tmp/ibis/获取数据到实际数据库时,insert命令出错(仍不清楚,但可能是通过__ibis_tmp数据库)。一旦我们将ibis包的config_init.py文件编辑到一个允许的临时位置/db。它就像一个护身符一样有效。

票数 0
EN

Stack Overflow用户

发布于 2020-09-21 00:19:43

而不是编辑前面提到的config_init.py

https://stackoverflow.com/a/47543691/5485370

使用ibis.options可以更轻松地分配临时数据库和路径:

代码语言:javascript
复制
ibis.options.impala.temp_db = 'your_temp_db'
ibis.options.impala.temp_hdfs_path = 'your_temp_hdfs_path'
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47445099

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档