You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SparkSQL与Hive连接异常:查询返回空行但列信息正常

问题:Spark读取Hive表返回0行但列结构正常(Hive中表确有数据)

我尝试从Hive数据库读取数据到Spark中,该数据库在Hive中确认存在数据,但使用Spark执行查询时返回0行(不过能正常返回列信息)。已将hive-site.xml文件复制到Spark配置目录中。相关代码如下:

导入语句

import org.apache.spark.SparkConf
import org.apache.spark.SparkContext
import org.apache.spark.rdd.RDD
import org.apache.spark.sql
import org.apache.spark.storage.StorageLevel
import org.apache.spark.sql.SparkSession
import org.apache.spark.sql.hive.HiveContext

创建SparkSession

val spark = SparkSession.builder().appName("Reto").config("spark.sql.warehouse.dir", "hive_warehouse_hdfs_path").enableHiveSupport().getOrCreate() 
spark.sql("show databases").show()

查询数据

spark.sql("USE retoiabd")
val churn = spark.sql("SELECT count(*) FROM churn").show()

输出结果

count(1) = 0


排查与解决建议
  • 检查spark.sql.warehouse.dir配置的HDFS路径是否与Hive实际仓库路径一致。在Hive命令行执行show variables like 'hive.metastore.warehouse.dir';获取真实路径,确保Spark配置的路径完全匹配,包括HDFS命名空间前缀(如hdfs://namenode:9000)。
  • 验证Spark运行用户对Hive表对应HDFS目录的读权限。执行hdfs dfs -ls /path/to/hive/table/churn查看目录权限,确保Spark用户拥有读权限,若权限不足需调整HDFS目录权限。
  • 确认Hive表存储格式的Spark兼容性。在Hive命令行执行desc formatted churn;查看Storage Format字段,确保是Spark支持的格式(如Parquet、ORC、TextFile等),若为自定义格式需确认Spark是否有对应解析依赖。
  • 刷新Hive表元数据。在Spark中执行spark.sql("REFRESH TABLE churn;")后重新查询,或重启SparkSession重新加载元数据,避免元数据不同步导致的问题。
  • 核对库表名大小写。Hive与Spark的大小写敏感性可能存在差异,确保USE retoiabd和FROM churn中的库名、表名与Hive中的完全一致(包括大小写)。

内容的提问来源于stack exchange,提问作者Yery

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 02:10:32