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 次 |
最近记录: |