2016-12-11 4 views
2

私はあなたのフレームワーク内でSQLクエリを書くことができるPySparkとSQL Contextを使用しています。何らかの理由でこのコマンドが機能していないため、なぜその理由がわかりません。Collat​​e NoCaseがエラーを返す

complaint_by_city = sqlContext.sql('SELECT City, COUNT(*) as `city_comp` ' 
            'FROM c311 ' 
            'GROUP BY City ' 
            'COLLATE NOCASE ' 
            'ORDER BY -city_comp ' 
            'LIMIT 21 ') 

編集それは私を与えるエラーがこの

ParseException: u"\nmismatched input 'COLLATE' expecting {<EOF>, ',', '.', '[', 'LIMIT', 'OR', 'AND', 'IN', NOT, 'BETWEEN', 'LIKE', RLIKE, 'IS', 'ASC', 'DESC', 'WINDOW', EQ, '<=>', '<>', '!=', '<', LTE, '>', GTE, '+', '-', '*', '/', '%', 'DIV', '&', '|', '^', 'SORT', 'CLUSTER', 'DISTRIBUTE'}(line 1, pos 81)\n\n== SQL ==\nSELECT City, COUNT(*) as `city_comp` FROM c311 GROUP BY City ORDER BY -city_comp COLLATE NOCASELIMIT 21 \n---------------------------------------------------------------------------------^^^\n" 
+1

まずかつ迅速に推測:COLLATE NOCASEが標準SQLではありません。おそらくSpark SQLはそれを理解していません。私はちょうどそれを取り出して再試行します... – joanolo

答えて

3

である私がお勧めでした:

SELECT LOWER(City) as City, COUNT(*) as city_comp 
FROM c311 
GROUP BY LOWER(City) 
ORDER BY city_comp DESC 
LIMIT 21; 
+0

完璧な、ありがとう。 –