问题标签 [apache-spark-encoders]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
924 浏览

apache-spark - 使用编码器如何比 java 序列化快得多?

使用编码器如何比 java 和 kryo 序列化快得多?

0 投票
1 回答
2128 浏览

java - Spark 编码器:何时使用 beans()

我在使用 Spark 的缓存机制时遇到了内存管理问题。我目前正在Encoder将 s 与 Kryo 一起使用,并且想知道切换到 bean 是否会帮助我减少缓存数据集的大小。

Encoder基本上,在使用s时,使用 bean 而不是 Kryo 序列化的优缺点是什么?是否有任何性能改进?Dataset除了使用 SER 选项进行缓存之外,有没有办法压缩缓存?

作为记录,我发现了一个类似的主题来处理两者之间的比较。但是,它没有详细介绍这种比较。

0 投票
1 回答
248 浏览

scala - 为什么数据集的 foreach 方法不需要编码器,但 map 需要?

我有两个数据集:Dataset[User]两者Dataset[Book]都是案例类UserBook我像这样加入他们:

val joinDS = ds1.join(ds2, "userid")

如果我尝试map覆盖 中的每个元素joinDS,编译器会抱怨缺少编码器:

not enough arguments for method map: (implicit evidence$46: org.apache.spark.sql.Encoder[Unit])org.apache.spark.sql.Dataset[Unit]. Unspecified value parameter evidence$46. Unable to find encoder for type stored in a Dataset.

但是如果我使用foreach而不是map. 为什么也不foreach需要编码器?我已经从 spark 会话中导入了所有隐式,那么map当数据集是连接两个包含案例类的数据集的结果时,为什么还需要编码器?另外,我从那个连接中得到什么类型的数据集?是一个Dataset[Row],还是别的什么?

0 投票
1 回答
1950 浏览

apache-spark - 关于数据集中 kryo 和 java 编码器的问题

我正在使用 Spark 2.4 并参考 https://spark.apache.org/docs/latest/rdd-programming-guide.html#rdd-persistence

豆类:

火花示例:

我在 Spark Web UI 中寻找存储。有用的部分 -

几个问题:

  • Kryo 序列化 RDD 的大小不应该小于 Java 序列化 RDD 而不是大于两倍吗?

  • 我也试过MEMORY_ONLY_SER()mode 和 RDDs 大小是一样的。作为序列化 Java 对象的 RDD 应存储为每个分区一个字节数组。持久化 RDD 的大小不应该小于反序列化的吗?

  • 在创建数据集时添加 Kryo 和 bean 编码器到底在做什么?

  • 我可以重命名持久化的 RDD 以获得更好的可读性吗?

0 投票
0 回答
28 浏览

apache-spark - 为什么 Pyspark 没有编码器

我是 Pyspark 世界的新手。我了解 Spark SQl 使用编码器在 Spark SQL 内部序列化反序列化对象。我知道这是关于将对象转换为 spark sql 内部存储类型。我在网上看到很多关于 Spark Scala 世界中编码器的例子。我在 Pyspark 世界中看不到任何示例。此外,我在任何 Pyspark 导入中都找不到编码器

例如。

火花中不存在

事实上,pyspark 中不存在催化剂包。谁能解释为什么编码器在 Pyspark 中没有意义?

0 投票
2 回答
908 浏览

java - 在创建数据集时使用 @JsonProperty 重命名 spark 中的列

有没有办法在创建数据集时使用杰克逊注释重命名数据集中的列名?

我的编码器类如下:

我的目标是根据@JsonProperty 重命名列,以便我可以重用相同的类和 json 功能。

请查找模块的相关版本: - Spark:2.4.0(使用 scala 2.11) - jackson-module-scala_2.11:2.9.6

如果您需要更多信息,请与我们联系。帮助表示赞赏。

0 投票
1 回答
369 浏览

scala - Spark Scala 数据集类型层次结构

试图强制扩展 W 的类以具有返回 WR 子类的数据集的方法 get。

编译错误:

如果我将 get 函数更改为以下内容:

它可以编译 - 因此我怀疑由于继承/类型层次结构存在问题。

0 投票
1 回答
128 浏览

scala - 使用类型化 UDAF 推断为二进制的列类型

我正在尝试实现一个返回复杂类型的类型化 UDAF。不知何故,Spark 无法推断结果列的类型binary并将序列化数据放在那里。这是重现问题的最小示例

它打印

0 投票
0 回答
45 浏览

java - apache spark中集合的编码器

有没有办法Encoders在 apache spark 中创建集合类型。我尝试了以下方法,但它不起作用。

然后我创建了一个子类

但是当我尝试如下创建编码器时,它显示编译错误

不兼容的类型。必需的编码器>,但 bean 被推断为编码。不兼容的等式约束。

0 投票
1 回答
1074 浏览

scala - 创建编码器后,在 Spark 中解析 Protobuf ByteString 不起作用

我正在尝试解析 spark 2.4 中的 protobuf (protobuf3) 数据,但 ByteString 类型遇到了一些问题。我使用 ScalaPB 库创建了案例类,并将 jar 加载到 spark shell 中。我也尝试为该类型创建一个隐式编码器,但是我仍然收到以下错误;

java.lang.UnsupportedOperationException: No Encoder found for com.google.protobuf.ByteString

到目前为止,这是我尝试过的;

任何帮助表示赞赏