Разница между sc.textFile и spark.read.text в Spark - PullRequest
0 голосов
/ 05 октября 2018

Я пытаюсь прочитать простой текстовый файл в 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

, затем я просматриваю данные и вижу, что два 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')]

Исходя из этого, вся последующая обработка должна быть изменена, чтобы отразить наличие 'значения'

Мои вопросы

  • ЧтоСмысл использования этих двух способов чтения текстового файла?
  • При каких обстоятельствах мы должны использовать какой метод?

1 Ответ

0 голосов
/ 05 октября 2018

Чтобы ответить (а),

sc.textFile(...) возвращает RDD[String]

textFile(String path, int minPartitions)

Чтение текстового файла из HDFS, локальной файловой системы (доступно на всехузлы) или любой URI файловой системы, поддерживаемой Hadoop, и возвращает его в виде СДР из строк.

spark.read.text(...) возвращает DataSet[Row] или DataFrame

text(String path)

Загружает текстовые файлы и возвращает DataFrame, схема которого начинается со строкового столбца с именем «value» и сопровождается разделенными столбцами, если они есть.

Для (b) это действительнозависит от вашего варианта использования.Поскольку вы пытаетесь создать здесь СДР, вам следует использовать sc.textFile.Вы всегда можете преобразовать фрейм данных в rdd и наоборот.

...