Как выполнить групповые и агрегатные операции на спарк SQL - PullRequest
0 голосов
/ 08 января 2019

Как выполнить групповое задание по искру sql. Я не могу группировать по одному конкретному столбцу и агрегировать значения по различным столбцам

Привет всем, Я хотел бы выполнить группирование по операциям над одним из моих внутренних запросов в spark SQL. Ниже приводится операция, которую я пытаюсь выполнить.

  val sqlResultjoin_groupInfo =
       spark.sql("select sum(values) as volume,
                         sum(disNumber) as disNumber,values 
                    from (select *
                            from dist a
                             join map b on a.id=b.id ) abc 
                  group by values")

Я получаю следующую ошибку

org.apache.spark.sql.catalyst.parser.ParseException: посторонний ввод ')' ожидание {'(', 'SELECT', 'FROM', 'ADD', 'AS', 'ALL', 'DISTINCT', 'WHERE', 'GROUP', 'BY', 'GROUPING' , 'SETS', 'CUBE', 'ROLLUP', 'ORDER', 'HAVING', 'LIMIT', 'AT', 'OR', 'AND', 'IN', NOT, 'NO', 'EXISTS' , 'МЕЖДУ', 'LIKE', RLIKE, 'IS', 'NULL', 'TRUE', 'FALSE', 'NULLS', 'ASC', 'DESC', 'FOR', 'INTERVAL', 'CASE' , 'КОГДА', 'THEN', 'ELSE', 'END', 'JOIN', 'CROSS', 'OUTER', 'INNER', 'LEFT', 'SEMI', 'RIGHT', 'FULL', ' ЕСТЕСТВЕННЫЙ »,« ВКЛ »,« Боковой »,« ОКНО »,« СВЕРХ »,« РАЗДЕЛ »,« ДИАПАЗОН »,« СТРОКИ »,« НЕБОЛЬШОЙ »,« ПРЕДВАРИТЕЛЬНЫЙ »,« СЛЕДУЮЩИЙ »,« ТОК »,« ПЕРВЫЙ » , 'AFTER', 'LAST', 'ROW', 'WITH', 'VALUES', 'CREATE', 'TABLE', 'DIRECTORY', 'VIEW', 'REPLACE', 'INSERT', 'DELETE', ' INTO »,« DESCRIBE »,« EXPLAIN »,« FORMAT »,« LOGICAL »,« CODEGEN »,« COST »,« CAST »,« SHOW »,« TABLES »,« COLUMNS »,« COLUMN »,« USE » , 'PARTITIONS', 'FUNCTIONS', 'DROP', 'UNION', 'EXCEPT', 'MINUS', 'INTERSECT', 'TO', 'TABLESAMPLE', 'STRATIFY', 'ALTER', 'RENAME', ' ARRAY »,« MAP »,« STRUCT »,« COMMENT »,« SET »,« RESET »,« DATA »,« START », «TRANSACTION», «COMMIT», «ROLLBACK», «MACRO», «IGNORE», «BOTH», «LEADING», «TRAILING», «IF», ​​«POSITION», «+», «-», «* ',' DIV ',' ~ ',' PERCENT ',' BUCKET ',' OUT ',' OF ',' SORT ',' CLUSTER ',' DISTRIBUTE ',' OVERWRITE ',' TRANSFORM ',' REDUCE ', «SERDE», «SERDEPROPERTIES», «RECORDREADER», «RECORDWRITER», «DELIMITED», «FIELDS», «TERMINATED», «COLLECTION», «ITEMS», «KEYS», «ESCAPED», «LINES», «SEPARATED» ',' FUNCTION ',' EXTENDED ',' REFRESH ',' CLEAR ',' CACHE ',' UNCACHE ',' LAZY ',' FORMATTED ',' GLOBAL ', TEMPORARY,' OPTIONS ',' UNSET ',' TBLPROPERTIES ',' DBPROPERTIES ',' BUCKETS ',' SKEWED ',' STORED ',' DIRECTORIES ',' LOCATION ',' EXCHANGE ',' ARCHIVE ',' UNARCHIVE ',' FILEFORMAT ',' TOUCH ',' COMPACT ', 'CONCATENATE', 'CHANGE', 'CASCADE', 'RESTRICT', 'CLUSTERED', 'SORTED', 'PURGE', 'INPUTFORMAT', 'OUTPUTFORMAT', БАЗА ДАННЫХ, БАЗЫ ДАННЫХ, 'DFS', 'TRUNCATE', 'АНАЛИЗ ',' COMPUTE ',' LIST ',' STATISTICS ',' PARTITIONED ',' EXTERNAL ',' DEFINED ',' REVOKE ',' GRANT ',' LOCK ',' UNLOCK ',' MSCK ',' REPAIR ', «ВОССТАНОВЛЕНИЕ», «ЭКСПОРТ», «ИМПОРТ» ',' LOAD ',' ROLE ',' ROLES ',' COMPACTIONS ',' PRINCIPALS ',' TRANSACTIONS ',' INDEX ',' INDEXES ',' LOCKS ',' OPTION ',' ANTI ',' LOCAL ', INPATH, STRING, BIGINT_LITERAL, SMALLINT_LITERAL, TINYINT_LITERAL, INTEGER_VALUE, DECIMAL_VALUE, DOUBLE_LITERAL, BIGDECIMAL_LITERAL, IDENTIFIER, BACKQUOTED_IDENTIFIER, 1 * 100) * 1)

     == SQL ==

Я получаю результаты, если я выполню вышеуказанную операцию только с одним столбцом, то есть

   val sqlResultjoin_groupInfo= spark.sql("select sum(values) as volume,values from ( select * from dist a join map b on  a.id=b.id ) abc group by values")

Может ли кто-нибудь помочь мне, как я могу создать группу на spark sql?

1 Ответ

0 голосов
/ 09 января 2019

Ссылка на все внешние элементы запроса через alias.col. Например,

  abc.values

Вы используете встроенное представление. А именно abc.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...