首页 > 其他分享 >pyspark集成访问hive数据踩坑记录

pyspark集成访问hive数据踩坑记录

时间:2024-02-18 10:55:20浏览次数:29  
标签:集成 py4j pyspark 9083 hive spark thrift

当前环境anaconda3、python3.9.13、jupyter

需要安装的pyspark、py4j

pyspark和py4j的离线安装包地址Links for pyspark (tsinghua.edu.cn) 和 Links for py4j (tsinghua.edu.cn)

一开我自己没有仔细的对应版本,找了一个pyspark3.4.1的包正常安装上去了,通过pyspark进入shell可以正常连接查询hive的数据,但是通过python shell和jupyter执行代码异常,报py4j下一个类加载不到,当时还挺纳闷的,pyspark正常,这个应该也是没问题才对,后面查了一下spark的版本,用的spark3.1.1,然后重新安装了这pyspark3.1.1后,可以正常的创建sparkssesion对象了,但是执行spark.sql("show databases").show() 报错了,报了认证的错误,hive这边配置了Kerberos认证。

这个是一开始用的代码,这个时候是没有加认证参数,后面加了认证参数还是一样的问题

import os
import sys
os.environ['SPARK_HOME'] = "/usr/local/spark3"
sys.path.append("/usr/local/spark3/python")
sys.path.append("/usr/local/spark3/python/lib/py4j-0.9-src.zip")
try:
    from pyspark import SparkContext
    from pyspark import SparkConf
    print ("success")
except ImportError as e:
    print ("error importing spark modules", e)
    sys.exit(1)
from pyspark.sql import SparkSession
spark = (SparkSession
         .builder.master('yarn')
         .appName('test')
         .config("spark.sql.warehouse.dir", "hdfs://path")
         .config("spark.kerberos.krb5Conf", "/etc/krb5.conf")
         .config("spark.kerberos.keytab", "/tmp/keytab/xxx.keytab")
         .config("spark.kerberos.principal", "xxxxx/域名@xxxxx")
         .config("hive.metastore.uris", "thrift://ip:9083,thrift://ip:9083,thrift://ip:9083")
         .enableHiveSupport()
         .getOrCreate())
spark.sql('show databases').show()
spark.stop()

 然后报了这个问题,认证出问题

后面网上找了一个下这个LOOKING_UP_SERVER的认证报错,说是没有对应的规制,但是这个我直接上测试换kinit的,正常可以用没问题,其实这个情况已经就差最后一步就成功了,然后就去扒拉kdc认证的日志,然后就发现了问题,连hivemetastore的时候使用了xxx/ip@xxxxx,问题就在这里了,kdc规制都是用域名的xxx/域名@xxxxx,所以报了规制不存在,将metastore改成thrift://域名:9083,thrift://域名:9083,thrift://域名:9083,重新连接就正常了

标签:集成,py4j,pyspark,9083,hive,spark,thrift
From: https://www.cnblogs.com/zyp87/p/18001839

相关文章

  • dlt s3 集成试用
    属于一个简单试用,dlt支持destinations为filesystem,当然也支持source为filesystem,内部处理是使用了s3fs环境准备这个比较简单,推荐基于venvdltpipinstalldlt[filesystem]s3通过docker部署,同时可以需要创建demobucketversion:"3"se......
  • idea里集成uglifyjs实现自动和手动压缩混淆js
    项目中可能会多次修改某些*.js文件,但是引用的是*.min.js,所以需要再改完源码后生成压缩的min.jsuglifyjs是个不错的工具,但是单独用略显麻烦,如果能整合到idea就好了。正好idea有这个功能。 1.安装nodejshttps://nodejs.org/dist/v8.9.3/node-v8.9.3-x64.msi   下......
  • 08.持续集成实战
    1.安装部署Jenkins环境,并截图2.创建一个非admin的用户,给他只配置执行Job的权限,并截图配置内容。3.创建一个JenkinsJob,要求执行 ls 与 pwd 命令,查看控制台输出并截图。 ......
  • 数据库归档工具 pt-archiver 的使用
    简介pt-archiver属于大名鼎鼎的percona工具集的一员,是归档MySQL大表数据的最佳轻量级工具之一。安装官网下载地址,选择PerconaToolkit版本和操作系统平台,具体如下图解压缩,所有工具都在bin目录下使用注意:pt-archiver操作的表必须有主键/root/test_archiver/pt-3......
  • 5小步快速集成使用sentinel限流
    在微服务系统中,缓存、限流、熔断是保证系统高可用的三板斧。本文通过如下几个小步骤,即可让spring项目快速集成使用sentinel实现系统限流。1、环境和资源准备sentinel支持许多流控方式,比如:单机限流、熔断降级、集群限流、系统保护规则、黑白名单授权等。本文介绍如何快速集成......
  • 3步让Dubbo项目快速集成Sentinel
    在微服务系统中,缓存、限流、熔断是保证系统高可用的三板斧。本文通过3个步骤,让Dubbo项目快速集成使用Sentinel实现系统限流。本文接着《5小步快速集成使用sentinel限流》,继续介绍Dubbo项目如何快速集成使用Sentinel。1、环境和资源准备环境和资源准备,参看《5小步快速集成使用......
  • 10分钟3个步骤集成使用SkyWalking
    随着业务发展壮大,微服务越来越多,调用链路越来越复杂,需要快速建立链路跟踪系统,以及建立系统的可观测性,以便快速了解系统的整体运行情况。此时就非常推荐SkyWalking了,SkyWalking不仅仅是一款链路跟踪工具,还可以作为一个系统监控工具,还具有告警功能。使用简便、上手又快。真可谓快、......
  • 在spring场景下同时使用Mockito进行集成测试
    转自:GPT回答https://chat.openai.com/share/07721c36-f18e-429f-b570-d8e14b4d8b37Mockito@InjectMocks测试February8,2024 Anonymous如何使用@InjectMocks测试被代理对象ChatGPTChatGPT使用@InjectMocks来测试被代理对象是一种......
  • Asp .Net Core 系列:Asp .Net Core 集成 Panda.DynamicWebApi
    目录简介Asp.NetCore集成Panda.DynamicWebApi配置原理什么是POCOController?POCO控制器原理ControllerFeatureProvider实现自定义判断规则IApplicationModelConventionPanda.DynamicWebApi中的实现ConfigureApiExplorer()ConfigureSelector()ConfigureParameters()简介Panda......
  • Spring Boot 集成 Redisson分布式锁(注解版)
    转载自:https://blog.csdn.net/Ascend1977/article/details/131126047        Redisson是一种基于Redis的Java驻留集群的分布式对象和服务库,可以为我们提供丰富的分布式锁和线程安全集合的实现。在SpringBoot应用程序中使用Redisson可以方便地实现分布式应用......