繁体   English   中英

Spark2.0中的Dataset.map(r => xx)和Dataframe.map(r => xx)有什么区别?

[英]What's the difference between Dataset.map(r=>xx) and Dataframe.map(r=>xx) in Spark2.0?

在Spark2.0中,我可以如何使用Dataframe.map(r => r.getAs[String]("field"))

但是DataSet.map(r => r.getAs[String]("field"))给出错误,指出r没有“ getAs”方法。

什么之间的区别rDataSetrDataFrame ,为什么r.getAs只适用于DataFrame

在StackOverflow中进行了一些研究之后,我在这里找到了一个有用的答案

尝试将数据框行映射到更新的行时发生编码器错误

希望对您有所帮助

Dataset具有类型参数: class Dataset[T] T是数据集中每个记录的类型。 T可能是任何东西(好吧,任何您可以为其提供隐式Encoder[T] ,但这都不重要)。

Dataset上的map操作将提供的功能应用于每个记录,因此您显示的映射操作中的r将具有T类型。

最后, DataFrame实际上只是Dataset[Row]的别名,这意味着每个记录的类型都是Row 并且Row有一个名为getAs的方法,该方法getAs一个类型参数和一个String参数,因此您可以在任何Row上调用getAs[String]("field") 对于任何没有此方法的T来说-都将无法编译。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM