Doris踩坑记录

建表

  1. doris的varchar计数方式和mysql有区别,mysql算字符,doris算字节。utf8中一个中文字符占3字节。建议mysql表转移到doris时varchar长度*4 。否则有可能插入报错。
  2. 语法糖
1
2
3
4
CREATE TABLE tmp.mid_result 
COMMENT "中间结果暂存表"
AS
SELECT

数据导入

  1. 容易出现脏数据导致不符合schema定义,建议导入数据前清洗制表符、换行符;导入时设置容错率。

Reason: actual column number is less than schema column number.actual number: 22, column separator: [ ], line delimiter: [ ], schema number: 31

  1. 对于一些需要保留源数据中制表符、换行符的场景,可以在flink connector 中添加以下参数,使用特殊字符作为导入数据的列分隔符和行分隔符。
1
2
3
, 'sink.properties.column_separator' = '\x01'
, 'sink.properties.line_delimiter' = '\x02'
, 'sink.properties.escape_delimiters' = 'true'

SQL语法特性

  1. GROUP BY 支持 ROLLUP、CUBE 以及 GROUPING SETS
1
2
3
SELECT 部门,员工,SUM(工资)AS TOTAL
FROM DEPART
GROUP BY ROLLUP(部门,员工)
  1. 支持CTE(不包括RECURSIVE语法)。当需要使用 CTE(Common Table Expressions) 作为 insert 操作中的查询部分时,必须指定 WITH LABEL 和 column list 部分或者对CTE进行包装
1
2
3
4
INSERT INTO tbl1 (k1)
select * from (
WITH cte1 AS (SELECT * FROM tbl1), cte2 AS (SELECT * FROM tbl2)
SELECT k1 FROM cte1 JOIN cte2 WHERE cte1.k1 = 1) as ret

Bitmap

  • TODO

推荐阅读

浅谈从Google Mesa到百度PALO

Licensed under CC BY-NC-SA 4.0
Built with Hugo
主题 StackJimmy 设计