dataframe.select, выберите столбцы dataframe из файла - PullRequest
0 голосов
/ 22 февраля 2019

Я пытаюсь создать дочерний фрейм данных из родительского фрейма данных.но у меня есть более 100 цветов для выбора.поэтому в операторе Select я могу дать столбцы из файла?

val Raw_input_schema=spark.read.format("text").option("header","true").option("delimiter","\t").load("/HEADER/part-00000").schema

val Raw_input_data=spark.read.format("text").schema(Raw_input_schema).option("delimiter","\t").load("/DATA/part-00000")

val filtered_data = Raw_input_data.select(all_cols)

как я могу отправить имена столбцов из файла в all_cols

Ответы [ 2 ]

0 голосов
/ 27 февраля 2019

наконец-то это сработало для меня;

val Raw_input_schema=spark.read.format("csv").option("header","true").option("delimiter","\t").load("headerFile").schema

val Raw_input_data=spark.read.format("csv").schema(Raw_input_schema).option("delimiter","\t").load("dataFile")

val filtered_file = sc.textFile("filter_columns_file").map(cols=>cols.split("\t")).flatMap(x=>x).collect().toList

//or

val filtered_file = sc.textFile(filterFile).map(cols=>cols.split("\t")).flatMap(x=>x).collect().toList.map(x => new Column(x))

val final_df=Raw_input_data.select(filtered_file.head, filtered_file.tail: _*)

//or

val final_df = Raw_input_data.select(filtered_file:_*)'
0 голосов
/ 22 февраля 2019

Я предполагаю, что вы читаете файл где-нибудь из hdfs или из общего конфигурационного файла?Причина этого в том, что в кластере этот код будет выполняться на отдельном узле и т. Д.

В этом случае я хотел бы подойти к следующему фрагменту кода:

  import org.apache.spark.sql.functions.col
  val lines = Source.fromFile("somefile.name.csv").getLines

  val cols = lines.flatMap(_.split(",")).map( col(_)).toArray
  val df3 = df2.select(cols :_ *)

По сути, выпросто нужно предоставить массив строк и использовать: _ * нотацию для переменного числа аргументов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...