您的位置:

使用sc.textfile轻松读取文件内容

一、sc.textfile介绍

sc.textfile是Spark Core提供的一种文本读取API,可以轻松读取文本文件,并将文件的每一行作为RDD中的一个元素。

sc(SparkContext)是Spark应用的入口点,是在Spark集群中与集群交互的主要方式。textfile()函数是SparkContext的一个方法,传入文本文件路径即可返回RDD。

示例代码:

from pyspark import SparkContext

sc = SparkContext("local", "textfile example")
text_file = sc.textFile("hdfs://path/to/file")

二、读取本地文件

读取本地文件可以使用相对或绝对路径,甚至可以使用file://前缀来指定文件的绝对路径。

其它的文件系统路径支持将被文件系统模块解析,例如输入hdfs://host:port/path。

示例代码:

from pyspark import SparkContext

sc = SparkContext("local", "textfile example")
text_file = sc.textFile("file:///path/to/file")

三、读取HDFS文件

如果你使用了Hadoop集群,那么HDFS可能是你存储数据的地方。使用sc.textfile()可以轻松地读取HDFS文件。

可以使用hdfs://前缀指定HDFS文件的路径,并指定正确的主机和端口。

示例代码:

from pyspark import SparkContext

sc = SparkContext("local", "textfile example")
text_file = sc.textFile("hdfs://localhost:9000/path/to/file")

四、读取目录下的所有文件

如果要读取目录下的所有文件,可以使用通配符指定一个目录下的所有文件。

使用通配符时,textfile()将读取目录下的所有文件并将其组合成一个RDD。

示例代码:

from pyspark import SparkContext

sc = SparkContext("local", "textfile example")
text_files = sc.textFile("hdfs://localhost:9000/path/to/folder/*")

五、读取多个文件

如果要读取多个文件,可以将每个文件的路径指定为一个数组,并将它们传递给textfile()函数。

示例代码:

from pyspark import SparkContext

sc = SparkContext("local", "textfile example")
text_files = sc.textFile(["hdfs://localhost:9000/path/to/file1", "hdfs://localhost:9000/path/to/file2"])

六、指定文件编码

默认情况下,textfile()将读取文件的原始字节,如果文件是UTF-8编码的,可能会得到损坏的字符串结果。

使用textfile()函数的第二个参数可以指定文件的编码方式。

示例代码:

from pyspark import SparkContext

sc = SparkContext("local", "textfile example")
text_file = sc.textFile("hdfs://localhost:9000/path/to/file", "UTF-8")