Применение функции карты в Dataframe будет преобразовывать в RDD каждый раз? - PullRequest
0 голосов
/ 19 сентября 2019

Применяет MAP () к Dataframe, всегда преобразует DF в RDD.

scala> val custDF = sqlContext.read.format("com.databricks.spark.avro").load("/user/cloudera/practice1/problem7/customer/avro")
**custDF: org.apache.spark.sql.DataFrame** = [customer_id: int, customer_fname: string, customer_lname: string]
scala> val a = custDF.map(x=>x(0)+"\t"+x(1)+"\t"+x(2))
**a: org.apache.spark.rdd.RDD[String]** = MapPartitionsRDD[106] at map at <console>:36

1 Ответ

1 голос
/ 19 сентября 2019

В Spark 1.6 DataFrames не отслеживают тип базовых данных.Это означает, что map не имеет значения над DataFrame.Тем не менее, когда вы вызываете map, он запускается поверх базового RDD.Это всего лишь ограничение дизайна Spark 1.6.Вы можете преобразовать его обратно в DataFrame, если вам нужны эти операции.Если вы обновитесь до Spark 2.2 или выше, вы можете использовать DataSet, то есть DataFrame с параметром типа.Вы можете запустить map и получить обратно DataSet.

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