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

PySpark读取HDFS文件报错:DataFrameReader无take属性(Spark 2.4.3)

解决PySpark中AttributeError: DataFrameReader object has no attribute 'take'的问题

嗨,刚接触PySpark很容易踩这个小坑,我来帮你捋清楚~

错误原因

你写的代码spark.read.format("hdfs:\\test\a.txt")返回的是DataFrameReader对象——这只是Spark用来配置读取参数的工具类,还没有真正读取文件生成DataFrame。而take()是DataFrame才有的方法,所以自然会抛出属性错误。

另外还要注意HDFS路径的写法:你用的hdfs:\\test\a.txt是Windows风格的转义写法,在PySpark里应该用正斜杠,或者用原始字符串避免转义问题,比如"hdfs://test/a.txt"或者r"hdfs://test/a.txt"。

正确的代码写法

有两种简洁的方式可以正确读取文本文件并生成DataFrame:

  1. 使用format() + load()的标准流程:
# 先指定读取格式为text,再加载HDFS路径
t = spark.read.format("text").load("hdfs://test/a.txt")
# 现在t是DataFrame了,可以调用take()
t.take(1)
  1. 使用文本文件的快捷方法text():
# 直接用read.text()读取文本文件,更简洁
t = spark.read.text("hdfs://test/a.txt")
t.take(1)

这样执行后就能得到你预期的第一条数据啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 09:16:24