параметр value не является членом org. apache .spark. sql .DataFrame - PullRequest
0 голосов
/ 18 июня 2020

Я пытаюсь создать фрейм данных в scala, как показано ниже:

var olympics =spark.read.csv("/FileStore/tables/Soccer_Data_Set_c46d1.txt").option("inferSchema","true").option("header","true").option("delimiter",",")

Когда я отправляю код, он выдает мне value option is not a member of org.apache.spark.sql.DataFrame ошибку.

Однако, когда я измените код, как показано ниже:

var olympics = spark.read.option("inferSchema","true").option("header","true").option("delimiter",",").csv("/FileStore/tables/Soccer_Data_Set_-c46d1.txt")

фрейм данных олимпийских игр успешно создан.

Может ли кто-нибудь помочь мне понять разницу между этими двумя фрагментами кода?

Ответы [ 2 ]

1 голос
/ 18 июня 2020

После того, как вы вызвали метод csv, у вас уже есть DataFrame, и данные уже считываются «в» искру, поэтому нет смысла устанавливать там параметры.

Во втором Например, вы вызываете read, чтобы «сказать», что вы хотите, чтобы Spark прочитал файл, задав свойства такого чтения, а затем фактически читаете файл.

0 голосов
/ 18 июня 2020

В первом наборе кода: При вызове метода ' read. csv ("/ FileStore / tables / Soccer_Data_Set_c46d1.txt") ' вы получите 'org. apache .spark. sql .Dataset 'как возвращаемое значение. Этот класс не определяет какой-либо метод 'option ()', который вы пытаетесь вызвать позже ('csv (..). Option ("inferSchema", "true")'). Итак, компилятор ограничивает вас и выдает ошибку.

См.: API класса набора данных где вы не можете найти определение метода 'option ()'

В второй набор кода: при вызове метода ' spark. read ' вы получите объект 'org. apache .spark. sql .DataFrameReader' в качестве возвращаемого значения. В этом классе определены некоторые из перегруженных методов «option», и поскольку вы используете один из допустимых методов, компилятор не дает никаких ошибок.

См. API класса DataFrameReader , где вы можете найти перегруженные методы для 'option ()'.

...