1、superset连接hive过程
(1)本次我们使用了anaconda,直接在名字叫superset的python环境里面,pip install pyhive[hive]
此命令既下载了pyhive也下载了它所依赖的其他安装包。
但是你也可以使用多个命令:
pip install pyhive
pip install sasl
pip install thrift
pip install thrift-sasl
pip install pyhs2
然后包下载完了,接下来可以在superset上测试是否可以连接hive了!!!
2、遇见的错误
安装完各种安装包之后,使用superset连接hive的进行测试还会报错。
首先打开superset,选择database,选择Apache Hive为连接类型,写的uri为:
统一格式为:
hive://hive所在主机的ip地址/数据库名?auth=NONE
我写的是:
hive://bigdata1:10000/default?auth=NONE
问题1:如果遇见驱动不匹配(报错信息:Could not load database driver: SparkEngineSpec)
就返回前面的内容下载完依赖包即可。
问题2:报错信息:
cationHandler.java:422’, ‘org.apache.hadoop.io.retry.RetryInvocationHandler C a l l : i n v o k e M e t h o d : R e t r y I n v o c a t i o n H a n d l e r . j a v a : 16 5 ′ , ′ o r g . a p a c h e . h a d o o p . i o . r e t r y . R e t r y I n v o c a t i o n H a n d l e r Call:invokeMethod:RetryInvocationHandler.java:165', 'org.apache.hadoop.io.retry.RetryInvocationHandler Call:invokeMethod:RetryInvocationHandler.java:165′,′org.apache.hadoop.io.retry.RetryInvocationHandlerCall:invoke:RetryInvocationHandler.java:157’, ‘org.apache.hadoop.io.retry.RetryInvocationHandler C a l l : i n v o k e O n c e : R e t r y I n v o c a t i o n H a n d l e r . j a v a : 9 5 ′ , ′ o r g . a p a c h e . h a d o o p . i o . r e t r y . R e t r y I n v o c a t i o n H a n d l e r : i n v o k e : R e t r y I n v o c a t i o n H a n d l e r . j a v a : 35 9 ′ , ′ c o m . s u n . p r o x y . Call:invokeOnce:RetryInvocationHandler.java:95', 'org.apache.hadoop.io.retry.RetryInvocationHandler:invoke:RetryInvocationHandler.java:359', 'com.sun.proxy. Call:invokeOnce:RetryInvocationHandler.java:95′,′org.apache.hadoop.io.retry.RetryInvocationHandler:invoke:RetryInvocationHandler.java:359′,′com.sun.proxy.Proxy30:getFileInfo::-1’, ‘org.apache.hadoop.hdfs.DFSClient:getFileInfo:DFSClient.java:1661’, ‘org.apache.hadoop.hdfs.DistributedFileSystem$29:doCall:DistributedFileSystem.java:1577’, ‘org.apache.hadoop.hdfs.DistributedFileSystem$29:doCall:DistributedFileSystem.java:1574’, ‘org.apache.hadoop.fs.FileSystemLinkResolver:resolve:FileSystemLinkResolver.java:81’, ‘org.apache.hadoop.hdfs.DistributedFileSystem:getFileStatus:DistributedFileSystem.java:1589’, ‘org.apache.hadoop.fs.FileSystem:exists:FileSystem.java:1683’, ‘org.apache.hadoop.hive.ql.exec.Utilities:ensurePathIsWritable:Utilities.java:4486’, ‘org.apache.hadoop.hive.ql.session.SessionState:createRootHDFSDir:SessionState.java:760’, ‘org.apache.hadoop.hive.ql.session.SessionState:createSessionDirs:SessionState.java:701’, ‘org.apache.hadoop.hive.ql.session.SessionState:start:SessionState.java:627’], sqlState=, errorCode=0, errorMessage=‘Failed to open new session: java.lang.RuntimeException: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.authorize.AuthorizationException): User: tom is not allowed to impersonate tom’), serverProtocolVersion=9, sessionHandle=, configuration=)
(Background on this error at: http://sqlalche.me/e/13/e3q8)
解决方法:
修改hive-site.xml和hadoop的core-site.xml
(1)修改hive-site.xml
下面的value值需要修改成你自己的!!!
<property>
<name>hive.server2.thrift.bind.host</name>
<value>bigdata1</value> #hiveserver2的主机名
</property>
<property>
<name>hive.server2.thrift.port</name>
<value>10000</value> #hiveserver2服务的端口号
</property>
<property>
<name>hive.server2.enable.doAs</name>
<value>false</value>
#设置了它,后续你使用superset对hive中数据进行可视化,可视化结果运行的非常快,而且不会出现拒绝连接的情况!!!
</property>
(2)修改hadoop下的core-site.xml
下面两个tom需要替换成你自己使用的用户!!!
<property>
<name>hadoop.proxyuser.tom.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.tom.groups</name>
<value>*</value>
</property>
对于这个问题一般情况下,只修改core-site.xml就可以解决问题,解决拒绝连接的问题。如果不行,两个文件都修改。
问题3:
测试连接hive的时候,一直报错,不能获取192.168.10.104下面的数据,所以我们此时应该重启superset或者关掉superset、关闭hadoop集群,再开启hadoop、superset、登录superset即可。
问题4:
superset连接hive,使用superset进行可视化,一旦超过一分钟,直接可视化报错。需要找到并修改config.py文件。
我的config.py文件的路径是:
[tom@bigdata1 superset]$ pwd
/opt/module/miniconda3/envs/superset/lib/python3.9/site-packages/superset
修改内容:
SUPERSET_WEBSERVER_TIMEOUT = 300
SQLLAB_TIMEOUT = 300
问题5:
测试连接成功,之后在superset上面可视化的时候,执行mapreduce任务的时候,因为内存不够,从而kill掉了mapreduce进程。
解决方法:此时应该修改hadoop的mapred-site.xml。
添加内容:
<property>
<name>mapreduce.map.memory.mb</name>
<value>2048</value>
<description>maps的资源限制</description>
</property>
<property>
<name>mapreduce.reduce.memory.mb</name>
<value>2048</value>
<description>reduces的资源限制</description>
</property>
修改完某些文件之后,记得需要重启集群才能生效!!!
12万+

被折叠的 条评论
为什么被折叠?



