星火/斯卡拉扁平化和flatMap不工作在数据帧(Spark/Scala flatten and f

2019-10-29 02:13发布

我有包含相同类型(相同的镶木模式)三种DataFrames一个数据帧。 他们只在它们被包含内容/值不同:

我想扁平化结构,使三个DataFrames越来越合并成一个单一的数据框镶木地板包含的所有内容/值。

我与扁平化和flatMap试了一下,但我总是得到错误:

Error: No implicit view available from org.apache.spark.sql.DataFrame => Traversable[U].parquetsFiles.flatten Error: not enough arguments for method flatten: (implicit as Trav: org.apache.spark.sql.DataFrame => Traversable[U], implicit m: scala.reflect.ClassTag[U]. Unspecified value parameters asTrav, m. parquetFiles.flatten

我还它转换为一个列表,然后试图弄平并且这也产生同样的错误。 你有什么想法如何解决这个问题还是什么问题在这里? 谢谢,亚历克斯

Answer 1:

因此,它看起来像你想这三个加盟DataFrames起来,做到这一点的unionAll功能会工作得很好。 你可以做parquetFiles.reduce((x, y) => x.unionAll(y))注意:这会爆炸的空名单上,但如果你可能有,只是看折叠的一个,而不是减少)。



Answer 2:

Scala编译器正在寻找一种方法来转换DataFrame s到一个Traversable ,因此它可以应用在flatten 。 但DataFrameTraversable ,所以它会失败。 此外,没有ClassTag可用,因为DataFrame s的不是静态类型。

您正在寻找的代码

parquetFiles.reduce(_ unionAll _)

可以由被优化DataFrame执行引擎。



文章来源: Spark/Scala flatten and flatMap is not working on DataFrame