Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 我们是否应该在训练之前并行化一个数据帧,就像并行化一个Seq一样_Scala_Apache Spark_Pyspark_Apache Spark Sql_Apache Spark Ml - Fatal编程技术网

Scala 我们是否应该在训练之前并行化一个数据帧,就像并行化一个Seq一样

Scala 我们是否应该在训练之前并行化一个数据帧,就像并行化一个Seq一样,scala,apache-spark,pyspark,apache-spark-sql,apache-spark-ml,Scala,Apache Spark,Pyspark,Apache Spark Sql,Apache Spark Ml,考虑一下这里给出的代码 假设我们使用sqlContext.read()将“training”作为数据帧读取,则应该 我们仍然在做类似的事情 val model1 = lr.fit(sparkContext.parallelize(training)) // or some variation of this 或者,当传递数据帧时,fit函数将自动处理计算/数据的并行化 在这方面,数据帧是一种分布式数据结构。既不需要也不可能将其并行化SparkConext.parallelize方法仅用于驻留

考虑一下这里给出的代码

假设我们使用sqlContext.read()将“training”作为数据帧读取,则应该 我们仍然在做类似的事情

val model1 = lr.fit(sparkContext.parallelize(training)) // or some variation of this
或者,当传递数据帧时,fit函数将自动处理计算/数据的并行化


在这方面,数据帧是一种分布式数据结构。既不需要也不可能将其并行化
SparkConext.parallelize
方法仅用于驻留在驱动程序内存中的分布式本地数据结构。您不应该习惯于分发大型数据集,更不用说重新分发
rdd
或更高级别的数据结构(就像您在前面的问题中所做的那样)

如果要在
RDD
/
Dataframe
Dataset
)之间进行转换,请使用专门为此设计的方法:

  • DataFrame
    RDD

    import org.apache.spark.sql.DataFrame
    import org.apache.spark.sql.Row
    import org.apache.spark.rdd.RDD
    
    val df: DataFrame  = Seq(("foo", 1), ("bar", 2)).toDF("k", "v")
    val rdd: RDD[Row] = df.rdd
    
  • RDD
    DataFrame

    val rdd: RDD[(String, Int)] = sc.parallelize(Seq(("foo", 1), ("bar", 2)))
    val df1: DataFrame = rdd.toDF
    // or
    val df2: DataFrame = spark.createDataFrame(rdd) // From 1.x use sqlContext
    

  • 您可能应该检查RDD和DataFrame之间的差异,以及如何在两者之间进行转换:

    直接回答您的问题:数据帧已经针对并行执行进行了优化。您不需要做任何事情,可以直接将其传递给任何spark estimators fit()方法。并行执行在后台处理

    import org.apache.spark.sql.DataFrame
    import org.apache.spark.sql.Row
    import org.apache.spark.rdd.RDD
    
    val df: DataFrame  = Seq(("foo", 1), ("bar", 2)).toDF("k", "v")
    val rdd: RDD[Row] = df.rdd
    
    val rdd: RDD[(String, Int)] = sc.parallelize(Seq(("foo", 1), ("bar", 2)))
    val df1: DataFrame = rdd.toDF
    // or
    val df2: DataFrame = spark.createDataFrame(rdd) // From 1.x use sqlContext