后,我用下面的命令做的第一后第二爆炸爆炸:SparkSQL第二爆炸的第一爆炸
myExplode = sqlContext.sql("select explode(names) as name_x from myTable")
myExplode = sqlContext.sql("select explode(name_x) as name1 from myTable")
myExplode.show(6,False)
然后我得到了错误: u"cannot resolve 'name_x' given input columns: [names, fieldA, fieldB, fieldC]; line 1 pos 15"
但是,第一个爆作品正好。我的第二次爆炸有什么不对吗?
下面是一个例子:
+---------------------------------------------------------------------------------+
|names |
+---------------------------------------------------------------------------------+
|[[[Max,White,WrappedArray(SanDiego)],3], [[Spot,Black,WrappedArray(SanDiego)],2]]|
|[[[Michael,Black,WrappedArray(SanJose)],1]] |
+---------------------------------------------------------------------------------+
后的第一爆炸,我得到:
+-----------------------------------------+
|name_x |
+-----------------------------------------+
|[[Max,Black],3] |
|[[Spot,White],2] |
|[[Michael,Yellow],1] |
+-----------------------------------------+
我现在要进行第二次发生爆炸name_x,这样我就可以得到[ Max,Black],[Spot,White]和[Michael,Yellow]。在此之后,我甚至想要做第三次爆炸,这样我只能得到Max,Spot和Michael,并将它们放在新的专栏中。这是可能的吗?
谢谢!
您正在对不存在的字段执行第二次爆炸。你期望它做什么? – eliasah
,因为[names]列是数组的数组。所以在第一个爆炸打开外部数组后,我想打开第二个(内部)数组。谢谢! – Edamame
发布示例数据集总是可以帮助其他人解决您的问题。 – dheee