相关疑难解决方法(0)

Spark中的DataFrame,Dataset和RDD之间的区别

我只是想知道Apache Spark中的RDDDataFrame (Spark 2.0.0 DataFrame只是一个类型别名Dataset[Row])有什么区别?

你能把一个转换成另一个吗?

apache-spark rdd apache-spark-sql apache-spark-dataset

228
推荐指数
10
解决办法
10万
查看次数

DataSet API和DataFrame API之间的区别

有没有人可以通过示例帮助我理解DataSet API和DataFrame API之间的区别?为什么需要在Spark中引入DataSet API?

apache-spark rdd apache-spark-sql apache-spark-dataset

49
推荐指数
0
解决办法
3万
查看次数

如何在Spark SQL中定义自定义类型的模式?

以下示例代码尝试将一些案例对象放入数据框中.代码包括案例对象层次结构的定义和使用此特征的案例类:

import org.apache.spark.{SparkContext, SparkConf}
import org.apache.spark.sql.SQLContext

sealed trait Some
case object AType extends Some
case object BType extends Some

case class Data( name : String, t: Some)

object Example {
  def main(args: Array[String]) : Unit = {
    val conf = new SparkConf()
      .setAppName( "Example" )
      .setMaster( "local[*]")

    val sc = new SparkContext(conf)
    val sqlContext = new SQLContext(sc)

    import sqlContext.implicits._

    val df = sc.parallelize( Seq( Data( "a", AType), Data( "b", BType) ), 4).toDF()
    df.show()
  }
}    
Run Code Online (Sandbox Code Playgroud)

执行代码时,我遗憾地遇到以下异常:

java.lang.UnsupportedOperationException: Schema for type …
Run Code Online (Sandbox Code Playgroud)

scala case-class apache-spark apache-spark-sql

26
推荐指数
1
解决办法
2万
查看次数

如何使用toDF()将自定义Java类对象的RDD转换为DataFrame?

我试图将Spark RDD转换为Spark SQL数据帧toDF().我已成功多次使用此函数,但在这种情况下,我收到编译器错误:

error: value toDF is not a member of org.apache.spark.rdd.RDD[com.example.protobuf.SensorData]
Run Code Online (Sandbox Code Playgroud)

这是我的代码如下:

// SensorData is an auto-generated class
import com.example.protobuf.SensorData
def loadSensorDataToRdd : RDD[SensorData] = ???

object MyApplication {
  def main(argv: Array[String]): Unit = {

    val conf = new SparkConf()
    conf.setAppName("My application")
    conf.set("io.compression.codecs", "com.hadoop.compression.lzo.LzopCodec")
    val sc = new SparkContext(conf)

    val sqlContext = new org.apache.spark.sql.SQLContext(sc)
    import sqlContext.implicits._

    val sensorDataRdd = loadSensorDataToRdd()
    val sensorDataDf = sensorDataRdd.toDF() // <-- CAUSES COMPILER ERROR
  }
}
Run Code Online (Sandbox Code Playgroud)

我猜测问题出在SensorData类上,这是一个从协议缓冲区自动生成的Java类.为了将RDD转换为数据帧,我该怎么办?

scala apache-spark apache-spark-sql

5
推荐指数
1
解决办法
1869
查看次数

DataSet相对于RDD的性能优势

在阅读了几篇关于Spark的DataSet的精彩文章(,本文)后,我完成了下一个DataSet相对于RDD的性能优势:

  1. 逻辑和物理计划优化;
  2. 严格的典型化;
  3. 矢量化操作;
  4. 低级内存管理.

问题:

  1. Spark的RDD还可以构建物理计划,并可以在同一阶段组合/优化多个转换.那么DataSet相对于RDD有什么好处呢?
  2. 第一个链接可以看到一个例子RDD[Person].DataSet是否具有高级典型化?
  3. "矢量化操作"是什么意思?
  4. 据我了解,DataSet的低内存管理=高级序列化.这意味着可序列化对象的堆外存储,您可以在其中只读取对象的一个​​字段而不进行反序列化.但是当你有IN_MEMORY_ONLY持久性策略时,情况怎么样?无论如何,DataSet会将所有内容序列化吗?它会比RDD有任何性能优势吗?

apache-spark rdd apache-spark-dataset

3
推荐指数
1
解决办法
531
查看次数