问题标签 [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 投票
5 回答
6509 浏览

apache-spark - 如何将行映射到 protobuf 生成的类?

我需要编写一个读取 DataSet[Row] 并将其转换为 DataSet[CustomClass] 的作业,其中 CustomClass 是一个 protobuf 类。

但是,看起来 Protobuf 类并不是真正的 Java Bean,我确实在以下方面获得了 NPE

如何确保作业可以发出 DataSet[CustomClass] 类型的数据集,其中 CustomClass 是 protobuf 类。有关为该类编写自定义编码器的任何指针/示例?

NPE:

Bean 编码器内部使用

如果我尝试在我的自定义编码器中做同样的事情,我会收到一条更具描述性的错误消息:

0 投票
1 回答
5227 浏览

scala - 在范围内找不到火花隐式编码器

我在spark custom kryo 编码器中已经概述了 spark 的问题,它没有为 UDF 提供架构,但现在创建了一个最小的示例: https ://gist.github.com/geoHeil/dc9cfb8eca5c06fca01fc9fc03431b2f

在这里,即使createDataSet语句失败,因为

为什么编码器不在范围内或至少不在正确范围内?

此外,尝试指定一个显式编码器,如:

不起作用。

0 投票
1 回答
9668 浏览

scala - Apache Spark 2.1:java.lang.UnsupportedOperationException:找不到 scala.collection.immutable.Set[String] 的编码器

我将 Spark 2.1.1 与 Scala 2.11.6 一起使用。我收到以下错误。我没有使用任何案例类。

以下代码部分是堆栈跟踪指向的位置。

0 投票
1 回答
1196 浏览

apache-spark - Scala 集合的数据集编码器

尝试从 s3 读取数据集时出现异常。公司案例类包含带有员工案例类的集合。

我试过kryo:

但它也不起作用。您知道如何将 scala 集合转换为数据集吗?

代码:

0 投票
1 回答
100 浏览

scala - 为什么使用 LinearRegressionModel 创建数据集会失败并显示“No Encoder found for org.apache.spark.ml.regression.LinearRegressionModel”?

我得到一个 DataFrame contians Tuple(String, org.apache.spark.ml.regression.LinearRegressionModel)

当我使用foreach函数时,我得到这个错误。

我应该自己写一个编码器吗?

0 投票
1 回答
3369 浏览

scala - 通用 T 作为 Spark Dataset[T] 构造函数

在以下代码段中,该tryParquet函数尝试从 Parquet 文件中加载数据集(如果存在)。如果不是,它会计算、保存并返回提供的数据集计划:

但是,这会在以下位置产生编译错误df.as[T]

找不到存储在数据集中的类型的编码器。通过导入 spark.implicits._ 支持原始类型(Int、String 等)和产品类型(案例类)

未来版本中将添加对序列化其他类型的支持。

案例成功(df)=> df.as[T]

tryParquet可以通过强制转换df返回一个无类型DataFrame并让调用者强制转换为所需的构造函数来规避这个问题。但是,如果我们希望类型由函数内部管理,有什么解决方案吗?

0 投票
2 回答
1941 浏览

scala - 如何创建地图数据集?

我正在使用 Spark 2.2,在尝试spark.createDataset调用Seq.Map

我的 Spark Shell 会话的代码和输出如下:

我试过import spark.implicits._了,虽然我相当肯定这是由 Spark shell 会话隐式导入的。

这是当前编码器未涵盖的情况吗?

0 投票
1 回答
278 浏览

scala - 如何实现 Functor[数据集]

我正在努力创建Functor[Dataset]...的实例问题是,当您mapA到必须BEncoder[B]隐式范围内时,但我不知道该怎么做。

当然,这段代码会引发编译错误,因为Encoder[B]它不可用但我不能添加Encoder[B]为隐式参数,因为它会改变 map 方法签名,我该如何解决这个问题?

0 投票
2 回答
2264 浏览

scala - 如何为 scala Iterable、spark 数据集制作编码器

我正在尝试从 RDD 创建数据集y

Pattern: y: RDD[(MyObj1, scala.Iterable[MyObj2])]

所以我创建了明确的编码器

当我编译这段代码时,我没有错误,但是当我尝试运行它时,我得到了这个错误:

对我的对象(MyObj1 和 MyObj2)的一些解释
- MyObj1 :

- MyObj2:

请提供任何帮助

0 投票
2 回答
1218 浏览

scala - 如何为 Scala 集合创建编码器(以实现自定义聚合器)?

Spark 2.3.0 与 Scala 2.11。我正在Aggregator根据此处的文档实施自定义。聚合器需要输入、缓冲区和输出 3 种类型。

我的聚合器必须对窗口中所有先前的行采取行动,所以我这样声明:

其中一个覆盖方法应该返回缓冲区类型的编码器,在这种情况下是ListBuffer. 我找不到任何合适的编码器,org.apache.spark.sql.Encoders也找不到任何其他编码方式,所以我不知道在这里返回什么。

我想创建一个具有单一类型属性的新案例类,ListBuffer[Foo]并将其用作我的缓冲区类,然后Encoders.product在其上使用,但我不确定这是否有必要,或者是否还有其他我遗漏的东西。感谢您的任何提示。