我是一名有帮助的助手,可以为您翻译文本。以下是需要翻译的内容:
给我报了这个错误(可能是编译错误,因为它在我处理的数据集很大时立即出现):
我的数据框(Dataframe)的模式(schema)如下:
我正在使用Zeppelin笔记本上的Spark,但groupByKey()似乎无法正常工作。
这段代码:
df.groupByKey(row => row.getLong(0))
.mapGroups((key, iterable) => println(key))
给我报了这个错误(可能是编译错误,因为它在我处理的数据集很大时立即出现):
error: 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.
我尝试添加一个case类,并将所有行映射到它上面,但仍然收到相同的错误提示。
import spark.implicits._
case class DFRow(profileId: Long, jobId: String, state: String)
def getDFRow(row: Row):DFRow = {
return DFRow(row.getLong(row.fieldIndex("item0")),
row.getString(row.fieldIndex("item1")),
row.getString(row.fieldIndex("item2")))
}
df.map(DFRow(_))
.groupByKey(row => row.getLong(0))
.mapGroups((key, iterable) => println(key))
我的数据框(Dataframe)的模式(schema)如下:
root
|-- item0: long (nullable = true)
|-- item1: string (nullable = true)
|-- item2: string (nullable = true)
List
等基本数据类型提供编码器,我该如何执行计算并获取它们呢? - JackOrJones