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

SparkSQL DataFrame报错:show不是DataFrameReader成员,求解决方案

解决Spark 1.6加载CSV时show()方法报错的问题

嘿,刚接触Spark/Scala/DataFrames遇到这个问题很正常,我来帮你理清问题出在哪以及怎么解决~

核心问题分析

你遇到的error: value show is not a member of org.apache.spark.sql.DataFrameReader报错,本质有两个原因:

  1. Spark 1.6.0没有内置CSV数据源:和Spark 2.0及以后版本不同,1.6版本需要依赖第三方的CSV处理包才能读取CSV文件;
  2. 方法调用对象错误:show()是DataFrame类的方法,而你是在DataFrameReader对象上调用了它——read方法返回的是DataFrameReader,它的作用是配置读取参数,只有调用load()后才会生成真正的DataFrame,这时候才能用show()。

具体解决步骤

1. 启动Scala Shell时引入CSV依赖包

Spark 1.6需要用Databricks提供的spark-csv包,启动Shell时要指定这个包(注意版本要和你的Scala、Spark版本匹配):

spark-shell --packages com.databricks:spark-csv_2.10:1.5.0

这里_2.10对应你的Scala 2.10.5,1.5.0是适配Spark 1.6.0的spark-csv版本。

2. 正确的CSV读取代码

在Shell里按以下顺序执行,就能成功生成DataFrame并调用show():

// 导入CSV相关类(Shell可能自动导入,但手动引入更稳妥)
import com.databricks.spark.csv._

// Spark 1.6用SQLContext来创建DataFrame,Shell里已经自动初始化了sqlContext
// 配置CSV读取参数并加载文件生成DataFrame
val df = sqlContext.read.format("com.databricks.spark.csv")
  .option("header", "true")  // 如果你的CSV文件有表头,就设为true,否则false
  .option("inferSchema", "true")  // 让Spark自动推断每列的数据类型
  .load("/你的CSV文件路径/xxx.csv")

// 现在调用show(),这是DataFrame的方法,就不会报错了
df.show()

避坑提醒

  • 不要用Spark 2.0+的spark.read写法,Spark 1.6里没有SparkSession,要基于sqlContext来操作;
  • 一定要确保先调用load()生成DataFrame,再调用show(),别把方法调用在DataFrameReader上。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:35:06