我正在尝试将简单的文本文件读取到Spark RDD中,我发现有两种方法可以这样做:
from pyspark.sql import SparkSession
spark = SparkSession.builder.master("local[*]").getOrCreate()
sc = spark.sparkContext
textRDD1 = sc.textFile("hobbit.txt")
textRDD2 = spark.read.text('hobbit.txt').rdd
Run Code Online (Sandbox Code Playgroud)
然后我查看数据,发现两个RDD的结构不同
textRDD1.take(5)
['The king beneath the mountain',
'The king of carven stone',
'The lord of silver fountain',
'Shall come unto his own',
'His throne shall be upholden']
textRDD2.take(5)
[Row(value='The king beneath the mountain'),
Row(value='The king of carven stone'),
Row(value='The lord of silver fountain'),
Row(value='Shall come unto his own'),
Row(value='His throne shall be upholden')]
Run Code Online (Sandbox Code Playgroud)
基于此,必须更改所有后续处理以反映“值”的存在
我的问题是
phi*_*ert 12
要回答(a),
sc.textFile(...) 返回一个 RDD[String]
Run Code Online (Sandbox Code Playgroud)textFile(String path, int minPartitions)从HDFS,本地文件系统(在所有节点上都可用)或任何Hadoop支持的文件系统URI中读取文本文件,并将其作为字符串的RDD返回。
spark.read.text(...)返回a DataSet[Row]或aDataFrame
Run Code Online (Sandbox Code Playgroud)text(String path)加载文本文件并返回一个DataFrame,其架构以名为“ value”的字符串列开头,如果有分区列,则其后为分区列。
对于(b),这实际上取决于您的用例。由于您尝试在此处创建RDD,因此应使用sc.textFile。您始终可以将数据帧转换为rdd,反之亦然。
| 归档时间: |
|
| 查看次数: |
9280 次 |
| 最近记录: |