2017-02-13 4 views
0

Я пытаюсь выполнить следующую команду в Цеппелин:Спарк Sql ИЛИ команда не возвращающие результаты

SELECT duration FROM voip where duration = 17 or duration = 1 

Это не возвращает никаких результатов, но во время работы их там собственные результаты возвращает запрос. Я также пытаюсь запустить аналогичный код в Scala, но он не работает.

df.where(df("duration").===(1) || df("duration").===(2)).limit(10) 

Я могу написать что-то, что просто делает каждый запрос и объединяет все кадры данных, но я беспокоюсь о производительности. Есть идеи?

+0

Неясно, работает ли версия scala или нет? Если это работает, похоже, что вы сравниваете строки в scala, но ints в SQL. Что такое схема? – ImDarrenG

+0

Извините, не могу опубликовать схему, мне пришлось изменить значения, которые я искал для публикации. Нитье работает и игнорирует байты вокруг версии Scala, они не должны быть там – user3920235

ответ

0

Вы можете попробовать с функцией ISIN:.

df.where (. DF ("длительность") ISIN ("1", "2")) предел (10)

val df = Seq(30,1,2,3,4,5,6).toDF("duration") 


val df1 = df.where(df("duration").isin("1","2")) 
df1.show() 


-----------------+ 
|duration   | 
+-----------------+ 
|    1| 
|    2| 
+-----------------+