PySpark中wholeTextFiles参数为何未按预期生成单条记录?
PySpark 读取文本文件的API差异解析
为什么两段代码表现不一致?
Option1 因无效配置保持逐行读取:
spark.read.option("wholeTextFiles", True).text("gs://abc.txt")中的wholeTextFiles并不是text数据源支持的参数。spark.read.text()的默认逻辑就是逐行读取文本,这个无效配置不会改变它的行为,所以2行内容会返回2条记录。Option2 是专门的整文件读取API:
sc.wholeTextFiles("gs://abc.txt")是Spark Context提供的专用API,设计目的就是把单个完整文件作为一条记录读取,返回的RDD每个元素是(文件存储路径, 文件全部内容)的元组,因此单个文件不管有多少行,只会返回1条记录。
用DataFrame API直接实现单条记录读取
如果不想转RDD,直接用DataFrame API实现整文件读取,需要使用text数据源支持的wholetext参数(注意是单数小写):
spark.read.text("gs://abc.txt", wholetext=True)
或者显式指定格式的写法:
spark.read.format("text").option("wholetext", "true").load("gs://abc.txt")
这样读取包含2行的文件时,会返回1条记录,内容是整个文件的完整文本。
内容的提问来源于stack exchange,提问作者Ritesh
相关产品推荐
相关产品推荐

