Python连接Hadoop数据时常见问题汇总有哪些?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1101个文字,预计阅读时间需要5分钟。
最近主要利用Python、Hadoop和Pandas进行深度分析与机器学习相关的工作。随着学习进程的推进,目前正准备使用Python、Spark和Hadoop构建后续的工作环境。
最近准备使用Python+Hadoop+Pandas进行一些深度的分析与机器学习相关工作。(当然随着学习过程的进展,现在准备使用Python+Spark+Hadoop这样一套体系来搭建后续的工作环境),当然这是后话。
但是这项工作首要条件就是将Python与Hadoop进行打通,本来认为很容易的一项工作,没有想到竟然遇到各种坑,花费了整整半天时间。后来也在网上看到大家在咨询相同的问题,但是真正解决这个问题的帖子又几乎没有,所以现在将Python连接Hadoop数据库过程中遇到的各种坑进行一个汇总,然后与大家进行分享,以尽量避免大家花费宝贵的时间。
(说明一下:这篇文章中的各种坑的解决,翻阅了网上无数的帖子,最好一GIT上面一个帖子的角落里面带了这么一句,否则很容易翻船。但是由于帖子太多,所以我就不一一帖出来了)
首先是选组件,我选择的是使用:impala+Python3.7来连接Hadoop数据库,如果你不是的话,就不要浪费宝贵时间继续阅读了。
执行的代码如下:
import impala.dbapi as ipdb conn = ipdb.connect(host="192.168.XX.XXX",port=10000,user="xxx",password="xxxxxx",database="xxx",auth_mechanism='PLAIN') cursor = conn.cursor() #其中xxxx是表名,为了不涉及到公司的信息,我把表名隐藏掉了,大家自己换成自己数据库表名 cursor.execute('select * From xxxx') print(cursor.description) # prints the result set's schema for rowData in cursor.fetchall(): print(rowData) conn.close()
坑一:提示语法错误
现象:
/Users/wangxxin/miniconda3/bin/python3.7 /Users/wangxxin/Documents/Python/PythonDataAnalyze/project/knDt/pyHiveTest.py
Traceback (most recent call last):
File "/Users/wangxxin/Documents/Python/PythonDataAnalyze/project/knDt/pyHiveTest.py", line 1, in <module>
import impala.dbapi as ipdb
File "/Users/wangxxin/miniconda3/lib/python3.7/site-packages/impala/dbapi.py", line 28, in <module>
import impala.hiveserver2 as hs2
File "/Users/wangxxin/miniconda3/lib/python3.7/site-packages/impala/hiveserver2.py", line 340
async=True)
解决办法:将参数async全部修改为“async_”(当然这个可以随便,只要上下文一致,并且不是关键字即可),原因:在Python3.0中,已经将async标为关键词,如果再使用async做为参数,会提示语法错误;应该包括以下几个地方:
#hiveserver2.py文件338行左右 op = self.session.execute(self._last_operation_string, configuration, async_=True) #hiveserver2.py文件1022行左右 def execute(self, statement, configuration=None, async_=False): req = TExecuteStatementReq(sessionHandle=self.handle, statement=statement, confOverlay=configuration, runAsync=async_)
坑二:提供的Parser.py文件有问题,加载的时候会报错
解决办法:
#根据网上的意见对原代码进行调整 elif url_scheme in ('c', 'd', 'e', 'f'): with open(path) as fh: data = fh.read() elif url_scheme in ('pypi.tuna.tsinghua.edu.cn/simple
建议按顺序安装,我这边之前有依赖包的问题,但是最终我是通过conda进行安装的。
其中在安装thriftpy、thrift_sasl、impyla报的时候报错,想到自己有conda,直接使用conda install,会自动下载依赖的包,如下所示(供没有conda环境的同学参考)
package
build
size
祝您好运!如果在实际过程中还是遇到各种各样的问题,请你留言。
最后有一点提示:
SQL里面不要带分号,否则会报错。但是这个就不是环境问题了。报错如下:
impala.error.HiveServer2Error: Error while compiling statement: FAILED: ParseException line 2:83 cannot recogniz
到此这篇关于Python连接Hadoop数据中遇到的各种坑(汇总)的文章就介绍到这了,更多相关Python连接Hadoop内容请搜索易盾网络以前的文章或继续浏览下面的相关文章希望大家以后多多支持易盾网络!
本文共计1101个文字,预计阅读时间需要5分钟。
最近主要利用Python、Hadoop和Pandas进行深度分析与机器学习相关的工作。随着学习进程的推进,目前正准备使用Python、Spark和Hadoop构建后续的工作环境。
最近准备使用Python+Hadoop+Pandas进行一些深度的分析与机器学习相关工作。(当然随着学习过程的进展,现在准备使用Python+Spark+Hadoop这样一套体系来搭建后续的工作环境),当然这是后话。
但是这项工作首要条件就是将Python与Hadoop进行打通,本来认为很容易的一项工作,没有想到竟然遇到各种坑,花费了整整半天时间。后来也在网上看到大家在咨询相同的问题,但是真正解决这个问题的帖子又几乎没有,所以现在将Python连接Hadoop数据库过程中遇到的各种坑进行一个汇总,然后与大家进行分享,以尽量避免大家花费宝贵的时间。
(说明一下:这篇文章中的各种坑的解决,翻阅了网上无数的帖子,最好一GIT上面一个帖子的角落里面带了这么一句,否则很容易翻船。但是由于帖子太多,所以我就不一一帖出来了)
首先是选组件,我选择的是使用:impala+Python3.7来连接Hadoop数据库,如果你不是的话,就不要浪费宝贵时间继续阅读了。
执行的代码如下:
import impala.dbapi as ipdb conn = ipdb.connect(host="192.168.XX.XXX",port=10000,user="xxx",password="xxxxxx",database="xxx",auth_mechanism='PLAIN') cursor = conn.cursor() #其中xxxx是表名,为了不涉及到公司的信息,我把表名隐藏掉了,大家自己换成自己数据库表名 cursor.execute('select * From xxxx') print(cursor.description) # prints the result set's schema for rowData in cursor.fetchall(): print(rowData) conn.close()
坑一:提示语法错误
现象:
/Users/wangxxin/miniconda3/bin/python3.7 /Users/wangxxin/Documents/Python/PythonDataAnalyze/project/knDt/pyHiveTest.py
Traceback (most recent call last):
File "/Users/wangxxin/Documents/Python/PythonDataAnalyze/project/knDt/pyHiveTest.py", line 1, in <module>
import impala.dbapi as ipdb
File "/Users/wangxxin/miniconda3/lib/python3.7/site-packages/impala/dbapi.py", line 28, in <module>
import impala.hiveserver2 as hs2
File "/Users/wangxxin/miniconda3/lib/python3.7/site-packages/impala/hiveserver2.py", line 340
async=True)
解决办法:将参数async全部修改为“async_”(当然这个可以随便,只要上下文一致,并且不是关键字即可),原因:在Python3.0中,已经将async标为关键词,如果再使用async做为参数,会提示语法错误;应该包括以下几个地方:
#hiveserver2.py文件338行左右 op = self.session.execute(self._last_operation_string, configuration, async_=True) #hiveserver2.py文件1022行左右 def execute(self, statement, configuration=None, async_=False): req = TExecuteStatementReq(sessionHandle=self.handle, statement=statement, confOverlay=configuration, runAsync=async_)
坑二:提供的Parser.py文件有问题,加载的时候会报错
解决办法:
#根据网上的意见对原代码进行调整 elif url_scheme in ('c', 'd', 'e', 'f'): with open(path) as fh: data = fh.read() elif url_scheme in ('pypi.tuna.tsinghua.edu.cn/simple
建议按顺序安装,我这边之前有依赖包的问题,但是最终我是通过conda进行安装的。
其中在安装thriftpy、thrift_sasl、impyla报的时候报错,想到自己有conda,直接使用conda install,会自动下载依赖的包,如下所示(供没有conda环境的同学参考)
package
build
size
祝您好运!如果在实际过程中还是遇到各种各样的问题,请你留言。
最后有一点提示:
SQL里面不要带分号,否则会报错。但是这个就不是环境问题了。报错如下:
impala.error.HiveServer2Error: Error while compiling statement: FAILED: ParseException line 2:83 cannot recogniz
到此这篇关于Python连接Hadoop数据中遇到的各种坑(汇总)的文章就介绍到这了,更多相关Python连接Hadoop内容请搜索易盾网络以前的文章或继续浏览下面的相关文章希望大家以后多多支持易盾网络!

