如何在Spark 2.X数据集中创建自定义编码器?

斯蒂芬·博斯

Encoder对于Pojo的/原语,Spark数据集从Row移到了Catalyst引擎使用ExpressionEncoder的列转换成SQL表达式。但是,似乎没有其他子类Encoder可用作我们自己的实现的模板。

这是Spark 1.X / DataFrames中无法在新架构下编译的代码示例:

//mapping each row to RDD tuple
df.map(row => {
    var id: String = if (!has_id) "" else row.getAs[String]("id")
    var label: String = row.getAs[String]("label")
    val channels  : Int = if (!has_channels) 0 else row.getAs[Int]("channels")
    val height  : Int = if (!has_height) 0 else row.getAs[Int]("height")
    val width : Int = if (!has_width) 0 else row.getAs[Int]("width")
    val data : Array[Byte] = row.getAs[Any]("data") match {
      case str: String => str.getBytes
      case arr: Array[Byte@unchecked] => arr
      case _ => {
        log.error("Unsupport value type")
        null
      }
    }
    (id, label, channels, height, width, data)
  }).persist(StorageLevel.DISK_ONLY)

}

我们得到一个编译器错误

Error:(56, 11) Unable to find encoder for type stored in a Dataset.
Primitive types (Int, String, etc) and Product types (case classes) are supported 
by importing spark.implicits._  Support for serializing other types will be added in future releases.
    df.map(row => {
          ^

因此,在某种程度上/某处应该有一种方法

  • 定义/实现我们的自定义编码器
  • DataFrame(现在是类型的数据集Row上执行映射时应用它
  • 注册编码器以供其他自定义代码使用

我正在寻找可以成功执行这些步骤的代码。

零323

据我所知,自1.6和如何在数据集中存储自定义对象中描述的解决方案以来,并没有什么真正的改变是唯一可用的选项。不过,您当前的代码对于产品类型的默认编码器应该可以正常工作。

要了解为什么您的代码在1.x中起作用而在2.0.0中不起作用,您必须检查签名。在1.x中,DataFrame.map是一种具有功能Row => T并转换RDD[Row]为的方法RDD[T]

在2.0.0DataFrame.map采用类型的函数Row => T,以及,但变换Dataset[Row](又名DataFrame)插入Dataset[T]因此T需要一个Encoder如果要获得“旧”行为,则应RDD显式使用

df.rdd.map(row => ???)

有关详细信息,Dataset[Row] map请参见尝试将数据框行映射到更新的行时出现编码器错误

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在PCollection <KV <String,B >>中使用自定义编码器?

来自分类Dev

如何使用tf2为seq2seq构建自定义双向编码器?

来自分类Dev

如何为自定义Java对象创建编码器?

来自分类Dev

如何在SonarQube 5.1.1中定义自定义编码规则?

来自分类Dev

如何在cocos2d-x中创建自定义创建函数

来自分类Dev

如何在 cocos2d-x 中创建自定义 Action

来自分类Dev

如何在 spark 2(java) 中创建广播变量?

来自分类Dev

如何在Cocos2d-x 3.x中创建没有lambda函数的自定义事件侦听器?

来自分类Dev

WCF。在自定义编码器中绑定请求和响应

来自分类Dev

WCF。在自定义编码器中绑定请求和响应

来自分类Dev

无法找到存储在 Spark Scala 数据集中的类型的编码器

来自分类Dev

如何在 Apache-Spark 2.x 中使用 java 执行增量序列

来自分类Dev

如何在Spark 2的数据框中允许None值被接受?

来自分类Dev

如何在log4j2中创建自定义RewritePolicy?

来自分类Dev

如何在log4j2中创建自定义Appender?

来自分类Dev

如何在symfony2中为自定义类创建服务容器

来自分类Dev

如何在yii2的gridView中创建自定义ActionColumn?

来自分类Dev

我该如何在Symfony2 / Doctrine中创建自定义EntityManager?

来自分类Dev

如何在Sublime Text 2 for Linux中创建和使用自定义代码段?

来自分类Dev

如何在Dart中使用Angular2实现自定义验证器?

来自分类Dev

如何在Zend Framework 2中注册自定义水化器?

来自分类Dev

如何在Angular2 / 4/5中实现自定义异步验证器

来自分类Dev

如何在Spring OAuth2资源服务器中使用自定义UserDetailService?

来自分类Dev

如何在EC2服务器上访问.emacs文件进行自定义?

来自分类Dev

如何在Zend Framework 2中注册自定义水化器?

来自分类Dev

如何在Angular2中制作自定义验证器

来自分类Dev

如何在PhalconPHP 2.x中放置自定义js代码?

来自分类Dev

如何在Tensorflow 2.x Keras自定义层中使用多个输入?

来自分类Dev

如何在 Spark 2 中搜索结构?

Related 相关文章

  1. 1

    如何在PCollection <KV <String,B >>中使用自定义编码器?

  2. 2

    如何使用tf2为seq2seq构建自定义双向编码器?

  3. 3

    如何为自定义Java对象创建编码器?

  4. 4

    如何在SonarQube 5.1.1中定义自定义编码规则?

  5. 5

    如何在cocos2d-x中创建自定义创建函数

  6. 6

    如何在 cocos2d-x 中创建自定义 Action

  7. 7

    如何在 spark 2(java) 中创建广播变量?

  8. 8

    如何在Cocos2d-x 3.x中创建没有lambda函数的自定义事件侦听器?

  9. 9

    WCF。在自定义编码器中绑定请求和响应

  10. 10

    WCF。在自定义编码器中绑定请求和响应

  11. 11

    无法找到存储在 Spark Scala 数据集中的类型的编码器

  12. 12

    如何在 Apache-Spark 2.x 中使用 java 执行增量序列

  13. 13

    如何在Spark 2的数据框中允许None值被接受?

  14. 14

    如何在log4j2中创建自定义RewritePolicy?

  15. 15

    如何在log4j2中创建自定义Appender?

  16. 16

    如何在symfony2中为自定义类创建服务容器

  17. 17

    如何在yii2的gridView中创建自定义ActionColumn?

  18. 18

    我该如何在Symfony2 / Doctrine中创建自定义EntityManager?

  19. 19

    如何在Sublime Text 2 for Linux中创建和使用自定义代码段?

  20. 20

    如何在Dart中使用Angular2实现自定义验证器?

  21. 21

    如何在Zend Framework 2中注册自定义水化器?

  22. 22

    如何在Angular2 / 4/5中实现自定义异步验证器

  23. 23

    如何在Spring OAuth2资源服务器中使用自定义UserDetailService?

  24. 24

    如何在EC2服务器上访问.emacs文件进行自定义?

  25. 25

    如何在Zend Framework 2中注册自定义水化器?

  26. 26

    如何在Angular2中制作自定义验证器

  27. 27

    如何在PhalconPHP 2.x中放置自定义js代码?

  28. 28

    如何在Tensorflow 2.x Keras自定义层中使用多个输入?

  29. 29

    如何在 Spark 2 中搜索结构?

热门标签

归档