hil*_*lel 6 apache-spark apache-spark-sql
假设我们有一个带有字符串列的DataFrame col1,以及一个数组列col2.我想知道Spark操作幕后发生了什么:
df.select('col1', explode('col2'))
似乎select将一系列Column对象作为输入,并且explode返回a Column以使类型匹配.但是返回的列explode('col2')在逻辑上与长度不同col1,所以我想知道select在构造其输出DataFrame时如何知道"同步"它们.我试着查看Column类的线索,但实际上找不到任何东西.
答案很简单 - 没有这样的数据结构Column.虽然Spark SQL使用列式存储进行缓存,并且可以利用数据布局进行某些低级操作,但列只是数据和转换的描述而不是数据容器.因此简化事情有点explode是另一个flatMap对Dataset[Row].
| 归档时间: |
|
| 查看次数: |
1062 次 |
| 最近记录: |