Spark 读 Hive(不在一个 yarn 集群)

本文提供了两种解决Spark连接Hive的问题的方法。一是复制Hive的配置文件至Spark目录,调整执行引擎;二是创建SparkSession时配置Hive元数据URI并启用Hive支持。注意shell启动时会预先生成SparkSession,使用getOrCreate时将沿用旧实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

方法一

1. 找到目标 Hive 的 hive-site.xml 文件,拷贝到 spark 的 conf 下面。

    在我的情况下 /etc/hive/conf/hive-site.xml -> /usr/lib/spark/conf/hive-site.xml

2. 运行期间,遇到一个问题:

java.lang.NoClassDefFoundError: org/apache/tez/dag/api/SessionNotRunning

   相关解答:https://issues.apache.org/jira/browse/SPARK-15779

   简单来说,把 "hive.execution.engine" 的 value,从 tez 改成 mr

 

方法二

   创建 SparkSession 的时候,在 config 中配置参数 "hive.metastore.uris",并 enableHiveSupport 即可

  val spark = SparkSession.builder()
    .appName(appName)
    .config("hive.metastore.uris", "thrift://ip-10-10-242-40.ec2.internal:9083")
    .enableHiveSupport()
    .getOrCreate()

  一开始,我在 spark-shell 中尝试没有成功。。原因是shell启动时,预先生成了 SparkSession,之后的 getOrCreate 都是直接用了老的实例。

转载于:https://www.cnblogs.com/keepthinking/p/10318606.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值