当前位置: 首页 > 知识库问答 >
问题:

Spark 1.6中的数据集

爱唯
2023-03-14

我正在评估将现有的RDD代码替换为Dataset。对于我的一个用例,我无法将数据集映射到另一个用例类。

以下是我想做的。。。

case class MyMap(map: Map[String, String])

case class V1(a: String, b: String){
  def toMyMap: MyMap = {
    MyMap(Map(a->b))
  }

  def toStr: String = {
    a
  }
}

object MyApp extends App {
//Get handle to sqlContext and other useful stuff here.
val df1 = sqlContext.createDataset(Seq(V1("2015-05-01", "data1"), V1("2015-05-01", "data2"))).toDF()
df1.as[V1].map(_.toMyMap).show() //Errors out. Added the exception below.
df1.as[V1].map(_.toStr).show() //Works fine.
}

任何帮助都将不胜感激。

但以下例外情况:

共有2个答案

洪光霁
2023-03-14

问题是scala Map类不可序列化,因此Dataset API无法自动生成适当的编码器。我建议将地图转换为字符串,然后解析字符串并转换回地图(假设您在地图中存储字符串)。

数据集应用编程接口可能也不是最好的选择。我写了这篇文章,可能会感兴趣。

斜宁
2023-03-14

我想你可能真的碰到了SPARK-12696,它在SPARK/master中是固定的。我希望在不久的将来发布1.6.1,其中应该包括这个补丁。

 类似资料:
  • 从Spark1.6开始,根据官方文档,我们不能向DataFrame添加特定的配置单元分区 我相信这很有效。在Spark1.6中有没有替代方案可以实现这一点? 根据我的理解,Spark1.6加载了所有分区,如果我筛选特定分区,它效率不高,它会击中内存并抛出GC(垃圾收集)错误,因为成千上万的分区被加载到内存中,而不是特定的分区。

  • 文件名太复杂和随机,我无法使用api获取。所以我想使用saveAstextfile,因为文件名并不复杂且规则,但我不知道如何在同一目录中追加文件?感谢您抽出时间。

  • 问题内容: 当我仔细观察时,我唯一提出的疑问是: 找不到适用于实际参数“ org.apache.spark.unsafe.types.UTF8String”的适用构造函数/方法;候选者为:“ public void sparkSQL.Tweet.setId(long)” 问题答案: 正如@ user9718686所写,id字段具有不同的类型:在json文件和类定义中。当您将其读入时,Spark会从

  • 问题内容: 我正在使用jdbc编写程序,该程序将成为数据库的接口(类似于CRUD应用程序)。我假设我必须编写一个类(例如),该类将对数据库执行所有操作(以及可能会简化为这些操作的某些其他逻辑)。用户界面由一组表和一些按钮组成。要使用Jtable,我需要实现一个类(例如),它是AbstractTableModel的子类。因此,此类将向用户显示我的数据。我需要为数据库架构中的所有表实现这种模型。我不想

  • 我已经使用 使用数据源连接数据库,但我们有50多个数据库。所以我想动态连接数据库。请帮帮我.

  • 这是我的数据库代码,我想从我的数据库中检索名称,并将其显示在listview中,在下面发布的另一个java文件中显示为profilelist.jar。但是我不能这样做,请告诉我这段代码是否正确? profileList.java 我在a.vaccination.datahandler.getTitle(datahandler.java:115)和a.vaccination.profilelist.