Я использую следующие команды, чтобы сделать второй взрываются после первого взрываются: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