您的位置:首页 > 数据库 > SQL

zeppelin+kylin+hive+hbase+hadoop+sqoop解决方案之sql问题

2018-01-15 10:49 323 查看
大致说下架构,hadoop的mapreduce实现基础计算,kylin实现数据统计分析,sqoop把mysql数据同步到hive中

hive和hbase服务于kylin,hive是数据仓库为kylin提供数据,hbase存放kylin生成的cube。zeppelin通过kylin提供的接口进行大数据可视化展示。

1、整个过程中mysql\hive\kylin三处用到了sql,但标准不一样这是比较搞脑子的地方。

1)mysql,我就不多讲了,各种函数处理数据十分灵活。

2)hive sql,灵活度比关系型数据库差些,不过也还好。https://www.iteblog.com/archives/2258.html#i-7

3)kylin在insight和api会调用自己的一套sql标准,官网说“- 可扩展超快OLAP引擎: Kylin是为减少在Hadoop上百亿规模数据查询延迟而设计- Hadoop ANSI SQL 接口: Kylin为Hadoop提供标准SQL支持大部分查询功能”,但是网上也么找到具体的函数使用说明,我根据报错信息,得出大概支持下列sql函数:

"UNION" 

 "INTERSECT" 

 "EXCEPT" 

 "MINUS" 

 "ORDER" 

 "LIMIT" 

 "OFFSET" 

 "FETCH" 

 "STREAM" 

 "DISTINCT" 

 "ALL" 

 "*" 

 "+" 

 "-" 

 "NOT" 

 "EXISTS" 

 <UNSIGNED_INTEGER_LITERAL> 

 <DECIMAL_NUMERIC_LITERAL> 

 <APPROX_NUMERIC_LITERAL> 

 <BINARY_STRING_LITERAL> 

 <PREFIXED_STRING_LITERAL> 

 <QUOTED_STRING> 

 <UNICODE_STRING_LITERAL> 

 "TRUE" 

 "FALSE" 

 "UNKNOWN" 

 "NULL" 

 <LBRACE_D> 

 <LBRACE_T> 

 <LBRACE_TS> 

 "DATE" 

 "TIME" 

 "TIMESTAMP" 

 "INTERVAL" 

 "?" 

 "CAST" 

 "EXTRACT" 

 "POSITION" 

 "CONVERT" 

 "TRANSLATE" 

 "OVERLAY" 

 "FLOOR" 

 "CEIL" 

 "CEILING" 

 "SUBSTRING" 

 "TRIM" 

 "RUNNING" 

 "PREV" 

 "NEXT" 

 <LBRACE_FN> 

 "MULTISET" 

 "ARRAY" 

 "SPECIFIC" 

 <IDENTIFIER> 

 <QUOTED_IDENTIFIER> 

 <BACK_QUOTED_IDENTIFIER> 

 <BRACKET_QUOTED_IDENTIFIER> 

 <UNICODE_QUOTED_IDENTIFIER> 

 "ABS" 

 "AVG" 

 "CARDINALITY" 

 "CHAR_LENGTH" 

 "CHARACTER_LENGTH" 

 "COALESCE" 

 "COLLECT" 

 "COVAR_POP" 

 "COVAR_SAMP" 

 "CUME_DIST" 

 "COUNT" 

 "CURRENT_DATE" 

 "CURRENT_TIME" 

 "CURRENT_TIMESTAMP" 

 "DENSE_RANK" 

 "ELEMENT" 

 "EXP" 

 "FIRST_VALUE" 

 "FUSION" 

 "GROUPING" 

 "HOUR" 

 "LAST_VALUE" 

 "LN" 

 "LOCALTIME" 

 "LOCALTIMESTAMP" 

 "LOWER" 

 "MAX" 

 "MIN" 

 "MINUTE" 

 "MOD" 

 "MONTH" 

 "NULLIF" 

 "OCTET_LENGTH" 

 "PERCENT_RANK" 

 "POWER" 

 "RANK" 

 "REGR_SXX" 

 "REGR_SYY" 

 "ROW_NUMBER" 

 "SECOND" 

 "SQRT" 

 "STDDEV_POP" 

 "STDDEV_SAMP" 

 "SUM" 

 "UPPER" 

 "USER" 

 "VAR_POP" 

 "VAR_SAMP" 

 "YEAR" 

 "CURRENT_CATALOG" 

 "CURRENT_DEFAULT_TRANSFORM_GROUP" 

 "CURRENT_PATH" 

 "CURRENT_ROLE" 

 "CURRENT_SCHEMA" 

 "CURRENT_USER" 

 "SESSION_USER" 

 "SYSTEM_USER" 

 "NEW" 

 "CASE" 

 "CURRENT" 

 "CURSOR" 

 "ROW" 

 "(" 

kylin相较于hivesql,很多实用功能都不能用,这就使得我们在整个实施过程中数据的处理和建模就要格外小心了。

说明

mysql

hive

kylin

日期转字符

select cast(current_date AS char);

select cast(current_date AS STRING);

select cast(current_date AS varchar);

字符串截取

select substr('20160106112134432',1,8);

select SUBSTRING('20160106112134432',1,8);

select substr('20160106112134432',1,8);

select SUBSTRING('20160106112134432',1,8);

select SUBSTRING('20160106112134432',1,8);

字符串合并

select concat('aa','bb')

select concat('aa','bb')

select concat('aa','bb')

日期加减

select ADDDATE(current_date,1);

select date_add(current_date,-1);



日期格式转换

select DATE_FORMAT(current_time,"%Y%m%d %H:%i:%s")

select from_unixtime(unix_timestamp(current_date),'yyyyMMdd') from dual;



2、具体的解决方案:

1)提前想好kylin中的数据类型,在sqoop从mysql导数据的时候,查询语句就要把数据格式转换好。

2)hive view的使用,适用于业务变动比较大的时候。我创建了一个视图v_params,只有一行一列数据,该数据中存放了各类参数通过|分隔。kylin没有日期计算函数,所以我要获取当前日期及过去几天的信息实现折线图显示,只能通过视图方式在hive中计算好后,每天凌晨刷新数值写到kylin中。

90d6
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐