【Pyspark】提取Hive数据报错 java.lang.AssertionError: assertion failed: No plan for HiveTableRelation

代码:

from pyspark.sql import SQLContext,HiveContext,SparkSession,Row
from pyspark.sql.types import Row,StringType,StructField,StringType,IntegerType
from pyspark.sql.dataframe import DataFrame

spark = SparkSession \
.builder \
.appName("Python Spark SQL basic example") \
.config("spark.some.config.option”,”some-value") \
.getOrCreate()


hive_context= HiveContext(spark)
 
# 生成查询的SQL语句,这个跟hive的查询语句一样,所以也可以加where等条件语句
one_day_ago = "20220429"
hive_read = "select * from temp_exp20220620_gmm_{}".format(one_day_ago)
 
# 通过SQL语句在hive中查询的数据直接是dataframe的形式
read_df = hive_context.sql(hive_read)


read_df.printSchema() # 这句没有问题,有正常输出

read_df.select("f476").show() #这句报错

一般来说这种错误的产生是因为在创建SparkSession对象的时候HiveContext没有被启用。

解决方法

创建SparkSession对象记得启用HiveContext, 即 使用enableHiveSupport(), 如下:

from pyspark.sql import SQLContext,HiveContext,SparkSession,Row
from pyspark.sql.types import Row,StringType,StructField,StringType,IntegerType
from pyspark.sql.dataframe import DataFrame

spark = SparkSession \
.builder \
.appName("Python Spark SQL basic example") \
.config("spark.some.config.option”,”some-value") \
.enableHiveSupport() \
.getOrCreate()

解决方案来自:java.lang.AssertionError: assertion failed: No plan for HiveTableRelation的解决方法_Lestat.Z.的博客-CSDN博客

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值