scala apache-spark dataset apache-spark-dataset

scala - Cómo crear un Dataset Spark desde un RDD



apache-spark apache-spark-dataset (1)

Aquí hay una respuesta que atraviesa un paso adicional: el DataFrame . Usamos SQLContext para crear un DataFrame y luego creamos un DataSet usando el tipo de objeto deseado, en este caso un LabeledPoint :

val sqlContext = new SQLContext(sc) val pointsTrainDf = sqlContext.createDataFrame(training) val pointsTrainDs = pointsTrainDf.as[LabeledPoint]

Actualización ¿Has oído hablar de SparkSession ? (tampoco yo hasta ahora ...)

Aparentemente, SparkSession es la forma preferida (TM) en Spark 2.0.0 y sigue adelante. Aquí está el código actualizado para el nuevo orden mundial (chispa):

Spark 2.0.0+ se acerca

Tenga en cuenta que en los dos enfoques siguientes (uno más simple, credit @ zero323), hemos logrado ahorros importantes en comparación con el enfoque de SQLContext : ya no es necesario crear primero un DataFrame .

val sparkSession = SparkSession.builder().getOrCreate() val pointsTrainDf = sparkSession.createDataset(training) val model = new LogisticRegression() .train(pointsTrainDs.as[LabeledPoint])

Segunda forma para Spark 2.0.0+ Crédito a @ zero323

val spark: org.apache.spark.sql.SparkSession = ??? import spark.implicits._ val trainDs = training.toDS()

Tradicional Spark 1.X y enfoque anterior

val sqlContext = new SQLContext(sc) // Note this is *deprecated* in 2.0.0 import sqlContext.implicits._ val training = splits(0).cache() val test = splits(1) val trainDs = training**.toDS()**

Vea también: ¿Cómo almacenar objetos personalizados en Dataset? por el estimado @ zero323.

Tengo un RDD[LabeledPoint] destinado a ser utilizado dentro de una tubería de aprendizaje automático. ¿Cómo convertimos ese RDD a un DataSet ? Tenga en cuenta que las nuevas spark.ml requieren entradas en el formato del Dataset .