华为云用户手册

  • Kerberos-based Security 表9 Kerberos-based Security参数说明 参数 描述 默认值 是否必选 security.kerberos.login.keytab 该参数为客户端参数,keytab路径。 根据实际业务配置 是 security.kerberos.login.principal 该参数为客户端参数,如果keytab和principal都设置,默认会使用keytab认证。 根据实际业务配置 否 security.kerberos.login.contexts 该参数为服务器端参数,flink生成jass文件的contexts。 Client、KafkaClient 是
  • State Backend 表8 State Backend参数说明 参数 描述 默认值 是否必选 state.backend.fs.checkpointdir 当backend为filesystem时的路径,路径必须能够被JobManager访问到,本地路径只支持local模式,集群模式下请使用HDFS路径。 hdfs:///flink/checkpoints 否 state.savepoints.dir Flink用于恢复和更新作业的保存点存储目录。当触发保存点的时候,保存点元数据信息将会保存到该目录中。 hdfs:///flink/savepoint 安全模式下必配 restart-strategy 默认重启策略,用于未指定重启策略的作业: fixed-delay failure-rate none none 否 restart-strategy.fixed-delay.attempts fixed-delay策略重试次数。 作业中开启了checkpoint,默认值为Integer.MAX_VALUE。 作业中未开启checkpoint,默认值为3。 否 restart-strategy.fixed-delay.delay fixed-delay策略重试间隔时间。单位:ms/s/m/h/d。 作业中开启了checkpoint,默认值是10 s。 作业中未开启checkpoint,默认值和配置项akka.ask.timeout的值一致。 否 restart-strategy.failure-rate.max-failures-per-interval 故障率策略下作业失败前给定时间段内的最大重启次数。 1 否 restart-strategy.failure-rate.failure-rate-interval failure-rate策略重试时间。单位:ms/s/m/h/d。 60 s 否 restart-strategy.failure-rate.delay failure-rate策略重试间隔时间。单位:ms/s/m/h/d。 默认值和akka.ask.timeout配置值一样。可参考Distributed Coordination (via Akka)。 否
  • SSL 表4 SSL参数说明 参数 描述 默认值 是否必选 security.ssl.protocol SSL传输的协议版本。 TLSv1.2 是 security.ssl.algorithms 支持的SSL标准算法,具体可参考java官网:http://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#ciphersuites。 TLS_DHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_DHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 是 security.ssl.enabled 内部通信SSL总开关,按照集群的安装模式自动配置。 安全模式:true 普通模式:false 是 security.ssl.keystore Java keystore文件。 - 是 security.ssl.keystore-password keystore文件解密密码。 - 是 security.ssl.key-password keystore文件中服务端key的解密密码。 - 是 security.ssl.truststore truststore文件包含公共CA证书。 - 是 security.ssl.truststore-password truststore文件解密密码。 - 是
  • Network communication (via Netty) 表5 Network communication参数说明 参数 描述 默认值 是否必选 taskmanager.network.netty.num-arenas Netty内存块数。 1 否 taskmanager.network.netty.server.numThreads Netty服务器线程的数量。 1 否 taskmanager.network.netty.client.numThreads Netty客户端线程数。 1 否 taskmanager.network.netty.client.connectTimeoutSec Netty客户端连接超时。单位:s。 120 否 taskmanager.network.netty.sendReceiveBufferSize Netty发送和接收缓冲区大小。 默认为系统缓冲区大小(cat / proc / sys / net / ipv4 / tcp_ [rw] mem),在现代Linux中为4MB。单位:bytes。 4096 否 taskmanager.network.netty.transport Netty传输类型,“nio”或“epoll”。 nio 否
  • JobManager Web Frontend 表6 JobManager Web Frontend参数说明 参数 描述 默认值 是否必选 jobmanager.web.allow-access-address web访问白名单,ip以逗号隔开。只有在白名单中的ip才能访问web。 * 是 flink.security.enable 用户安装Flink集群时,需要选择“安全模式”或“普通模式”。 当选择“安全模式”,自动配置为“true”。 当选择“普通模式”,自动配置为“false”。 对于已经安装好的Flink集群,用户可以通过查看配置的值来区分当前安装的是安全模式还是普通模式。 自动配置 否 rest.bind-port web端口,支持范围:32261-32325。 32261-32325 否 jobmanager.web.history 显示“flink.security.enable”最近的job数目。 5 否 jobmanager.web.checkpoints.disable 禁用checkpoint统计。 false 否 jobmanager.web.checkpoints.history Checkpoint统计记录数。 10 否 jobmanager.web.backpressure.cleanup-interval 未访问反压记录清理周期。单位:ms。 600000 否 jobmanager.web.backpressure.refresh-interval 反压记录刷新周期。单位:ms。 60000 否 jobmanager.web.backpressure.num-samples 计算反压使用的堆栈跟踪记录数。 100 否 jobmanager.web.backpressure.delay-between-samples 计算反压的采样间隔。单位:ms 50 否 jobmanager.web.ssl.enabled web是否使用SSL加密传输,仅在全局开关security.ssl开启时有。 false 是 jobmanager.web.accesslog.enable web操作日志使能开关,日志会存放在webaccess.log中。 true 是 jobmanager.web.x-frame-options http安全头X-Frame-Options的值,可选范围为:SAMEORIGIN、DENY、ALLOW-FROM uri。 DENY 是 jobmanager.web.cache-directive web页面是否支持缓存。 no-store 是 jobmanager.web.expires-time web页面缓存过期时长。单位:ms。 0 是 jobmanager.web.access-control-allow-origin 网页同源策略,防止跨域攻击。 * 是 jobmanager.web.refresh-interval web网页刷新时间。单位:ms。 3000 是 jobmanager.web.logout-timer 配置无操作情况下自动登出时间间隔。单位:ms。 600000 是 jobmanager.web.403-redirect-url web403页面,访问如果遇到403错误,则会重定向到配置的页面。 自动配置 是 jobmanager.web.404-redirect-url web404页面,访问如果遇到404错误,则会重定向到配置的页面。 自动配置 是 jobmanager.web.415-redirect-url web415页面,访问如果遇到415错误,则会重定向到配置的页面。 自动配置 是 jobmanager.web.500-redirect-url web500页面,访问如果遇到500错误,则会重定向到配置的页面。 自动配置 是 rest.await-leader-timeout 客户端等待Leader地址的时间(以ms为单位)。 30000 否 rest.client.max-content-length 客户端处理的最大内容长度(以字节为单位)。 104857600 否 rest.connection-timeout 客户端建立TCP连接的最长时间(以ms为单位)。 15000 否 rest.idleness-timeout 连接保持空闲状态的最长时间(以ms为单位)。 300000 否 rest.retry.delay 客户端在连续重试之间等待的时间(以ms为单位)。 3000 否 rest.retry.max-attempts 如果可重试算子操作失败,客户端将尝试重试的次数。 20 否 rest.server.max-content-length 服务端处理的最大内容长度(以字节为单位)。 104857600 否 rest.server.numThreads 异步处理请求的最大线程数。 4 否 web.timeout web监控超时时间(以ms为单位)。 10000 否
  • Distributed Coordination (via Akka) 表3 Distributed Coordination参数说明 参数 描述 默认值 是否必选 akka.ask.timeout akka所有异步请求和阻塞请求的超时时间。如果Flink发生超时失败,可以增大这个值。当机器处理速度慢或者网络阻塞时会发生超时。单位:ms/s/m/h/d。 10s 否 akka.lookup.timeout 查找JobManager actor对象的超时时间。单位:ms/s/m/h/d。 10s 否 akka.framesize JobManager和TaskManager间最大消息传输大小。当Flink出现消息大小超过限制的错误时,可以增大这个值。单位:b/B/KB/MB。 10485760b 否 akka.watch.heartbeat.interval Akka DeathWatch机制检测失联TaskManager的心跳间隔。如果TaskManager经常发生由于心跳消息丢失或延误而被错误标记为失联的情况,可以增大这个值。单位:ms/s/m/h/d。 10s 否 akka.watch.heartbeat.pause Akka DeathWatch可接受的心跳暂停时间,较小的数值表示不允许不规律的心跳。单位:ms/s/m/h/d。 60s 否 akka.watch.threshold DeathWath失败检测阈值,较小的数值容易把正常TaskManager标记为失败,较大的值增加了失败检测的时间。 12 否 akka.tcp.timeout 发送连接TCP超时时间,如果经常发生满网络环境下连接TaskManager超时,可以增大这个值。单位:ms/s/m/h/d。 20s 否 akka.throughput Akka批量处理消息的数量,一次操作完后把处理线程归还线程池。较小的数值代表actor消息处理的公平调度,较大的值以牺牲调度公平的代价提高整体性能。 15 否 akka.log.lifecycle.events Akka远程时间日志开关,当需要调试时可打开此开关。 false 否 akka.startup-timeout 远程组件启动失败前的超时时间。该值需带一个时间单位(ms/s/min/h/d) 与akka.ask.timeout的值一致 否 akka.ssl.enabled Akka通信SSL开关,仅在全局开关security.ssl开启时有。 true 是 akka.client-socket-worker-pool.pool-size-factor 计算线程池大小的因子,计算公式:ceil(可用处理器*因子),计算结果限制在pool-size-min和pool-size-max之间。 1.0 否 akka.client-socket-worker-pool.pool-size-max 基于因子计算的线程数上限。 2 否 akka.client-socket-worker-pool.pool-size-min 基于因子计算的线程数下限。 1 否 akka.client.timeout 【说明】客户端超时时间。该值需带一个时间单位(ms/s/min/h/d)。 60s 否 akka.server-socket-worker-pool.pool-size-factor 【说明】计算线程池大小的因子,计算公式:ceil(可用处理器*因子),计算结果限制在pool-size-min和pool-size-max之间。 1.0 否 akka.server-socket-worker-pool.pool-size-max 基于因子计算的线程数上限。 2 否 akka.server-socket-worker-pool.pool-size-min 基于因子计算的线程数下限。 1 否
  • Blob服务端 表2 Blob服务端参数说明 参数 描述 默认值 是否必选 blob.server.port blob服务器端口。 32456-32520 否 blob.service.ssl.enabled blob传输通道是否加密传输,仅在全局开关security.ssl开启时有。 true 是 blob.fetch.retries TaskManager从JobManager下载blob文件的重试次数。 50 否 blob.fetch.num-concurrent JobManager支持的下载blob的并发数。 50 否 blob.fetch.backlog JobManager支持的blob下载队列大小,比如下载Jar包等。单位:个。 1000 否 library-cache-manager.cleanup.interval 当用户取消flink job后,jobmanager删除HDFS上存放用户jar包的时间,单位为s。 3600 否
  • 配置详情 本章节为你介绍如下参数配置: JobManager & TaskManager: JobManager和TaskManager是Flink的主要组件,针对各种安全场景和性能场景,配置项包括通信端口,内存管理,连接重试等。 Blob服务端: JobManager节点上的Blob服务端是用于接收用户在客户端上传的Jar包,或将Jar包发送给TaskManager,传输log文件等,配置项包括端口,SSL,重试次数,并发等。 Distributed Coordination (via Akka): Flink客户端与JobManager的通信,JobManager与TaskManager的通信和TaskManager与TaskManager的通信都基于Akka actor模型。相关参数可以根据网络环境或调优策略进行配置,配置项包括消息发送和等待的超时设置,akka监测机制Deathwatch等。 SSL: 当需要配置安全Flink集群时,需要配置SSL相关配置项,配置项包括SSL开关,证书,密码,加密算法等。 Network communication (via Netty): Flink运行Job时,Task之间的数据传输和反压检测都依赖Netty,某些环境下可能需要对Netty参数进行配置。对于高级调优,可调整部分Netty配置项,默认配置已可满足大规模集群并发高吞吐量的任务。 JobManager Web Frontend: JobManager启动时,会在同一进程内启动Web服务器,访问Web服务器可以获取当前Flink集群的信息,包括JobManager,TaskManager及集群内运行的Job。Web服务器参数的配置项包括端口,临时目录,显示项目,错误重定向,安全相关等。 File Systems: Task运行中会创建结果文件,支持对文件创建行为进行配置,配置项包括文件覆盖策略,目录创建等。 State Backend: Flink提供了HA和作业的异常恢复,并且提供版本升级时作业的暂停恢复。对于作业状态的存储,Flink依赖于state backend,作业的重启依赖于重启策略,用户可以对这两部分进行配置。配置项包括state backend类型,存储路径,重启策略等。 Kerberos-based Security: Flink安全模式下必须配置Kerberos相关配置项,配置项包括kerberos的keytab、principal等。 HA: Flink的HA模式依赖于ZooKeeper,所以必须配置ZooKeeper相关配置,配置项包括ZooKeeper地址,路径,安全认证等。 Environment: 对于JVM配置有特定要求的场景,可以通过配置项传递JVM参数到客户端,JobMananger,TaskManager等。 Yarn: Flink运行在Yarn集群上时,JobManager运行在Application Master上。JobManager的一些配置参数依赖于Yarn,通过配置YARN相关的配置,使Flink更好的运行在Yarn上,配置项包括yarn container的内存,虚拟内核,端口等。 Pipeline: 为适应某些场景对降低时延的需求,设计多个Job间采用Netty直接相连的方式传递数据,即分别使用NettySink用于Server端、NettySource用于Client端进行数据传输。配置项包括NettySink的信息存放路径、NettySink的端口监测范围、连接是否通过SSL加密以及NettySink监测所使用的网络所在域等。 配置客户端提交作业开启告警功能: 通过Flink客户端提交的作业默认未开启告警功能,如果要开启告警功能,需要在提交作业的节点安装两个FlinkServer实例,并在客户端的“flink-conf.yaml”文件中配置相关参数。
  • JobManager & TaskManager 表1 JobManager & TaskManager参数说明 参数 描述 默认值 是否必选 taskmanager.rpc.port TaskManager的IPC端口范围。 32326-32390 否 taskmanager.memory.segment-size 内存管理器和网络堆栈使用的内存缓冲区大小。单位:bytes。 32768 否 taskmanager.data.port TaskManager数据交换端口范围。 32391-32455 否 taskmanager.data.ssl.enabled TaskManager之间数据传输是否使用SSL加密,仅在全局开关security.ssl开启时有效。 false 否 taskmanager.numberOfTaskSlots TaskManager占用的slot数,一般配置成物理机的核数,yarn-session模式下只能使用-s参数传递,yarn-cluster模式下只能使用-ys参数传递。 1 否 parallelism.default 默认并行度,用于未指定并行度的作业。 1 否 task.cancellation.interval 两次连续任务取消操作的间隔时间。单位:ms。 30000 否 client.rpc.port Flink client端Akka system监测端口。 32651-32720 否 jobmanager.heap.size JobManager堆内存大小,yarn-session模式下只能使用-jm参数传递,yarn-cluster模式下只能使用-yjm参数传递,如果小于YARN配置文件中yarn.scheduler.minimum-allocation-mb大小,则使用YARN配置中的值。单位:B/KB/MB/GB/TB。 1024mb 否 taskmanager.heap.size TaskManager堆内存大小,yarn-session模式下只能使用-tm参数传递,yarn-cluster模式下只能使用-ytm参数传递,如果小于YARN配置文件中yarn.scheduler.minimum-allocation-mb大小,则使用YARN配置中的值。单位:B/KB/MB/GB/TB。 1024mb 否 taskmanager.network.numberOfBuffers TaskManager网络传输缓冲栈数量,如果作业运行中出错提示系统中可用缓冲不足,可以增加这个配置项的值。 2048 否 taskmanager.debug.memory.startLogThread 调试Flink内存和GC相关问题时可开启,TaskManager会定时采集内存和GC的统计信息,包括当前堆内,堆外,内存池的使用率和GC时间。 false 否 taskmanager.debug.memory.logIntervalMs TaskManager定时采集内存和GC的统计信息的采集间隔。 0 否 taskmanager.maxRegistrationDuration TaskManager向JobManager注册自己的最长时间,如果超过时间,TaskManager会关闭。 5 min 否 taskmanager.initial-registration-pause 两次连续注册的初始间隔时间。该值需带一个时间单位(ms/s/min/h/d)(比如5秒)。 时间数值和单位之间有半角字符空格。ms/s/m/h/d表示毫秒、秒、分钟、小时、天。 500 ms 否 taskmanager.max-registration-pause TaskManager注册失败最大重试间隔。单位:ms/s/m/h/d。 30 s 否 taskmanager.refused-registration-pause TaskManager注册连接被JobManager拒绝后的重试间隔。单位:ms/s/m/h/d。 10 s 否 classloader.resolve-order 从用户代码加载类时定义类解析策略,这意味着是首先检查用户代码jar(“child-first”)还是应用程序类路径(“parent-first”)。默认设置指示首先从用户代码jar加载类,这意味着用户代码jar可以包含和加载不同于Flink使用的(依赖)依赖项。 child-first 否 slot.idle.timeout Slot Pool中空闲Slot的超时时间(以ms为单位)。 50000 否 slot.request.timeout 从Slot Pool请求Slot的超时(以ms为单位)。 300000 否 task.cancellation.timeout 取消任务超时时间(以ms为单位),超时后会触发TaskManager致命错误。设置为0,取消任务卡住则不会报错。 180000 否 taskmanager.network.detailed-metrics 启用网络队列长度的详细指标监控。 false 否 taskmanager.network.memory.buffers-per-channel 每个传出/传入通道(子分区/输入通道)使用的最大网络缓冲区数。在基于信用的流量控制模式下,这表示每个输入通道中有多少信用。它应配置至少2以获得良好的性能。1个缓冲区用于接收子分区中的飞行中数据,1个缓冲区用于并行序列化。 2 否 taskmanager.network.memory.floating-buffers-per-gate 每个输出/输入门(结果分区/输入门)使用的额外网络缓冲区数。在基于信用的流量控制模式中,这表示在所有输入通道之间共享多少浮动信用。浮动缓冲区基于积压(子分区中的实时输出缓冲区)反馈来分布,并且可以帮助减轻由子分区之间的不平衡数据分布引起的背压。如果节点之间的往返时间较长和/或群集中的机器数量较多,则应增加此值。 8 否 taskmanager.network.memory.fraction 用于网络缓冲区的JVM内存的占比。这决定了TaskManager可以同时拥有多少流数据交换通道以及通道缓冲的程度。如果作业被拒绝或者收到系统没有足够缓冲区的警告,请增加此值或“taskmanager.network.memory.min”和“taskmanager.network.memory.max”。另请注意,“taskmanager.network.memory.min”和“taskmanager.network.memory.max”可能会覆盖此占比。 0.1 否 taskmanager.network.memory.max 网络缓冲区的最大内存大小。该值需带一个大小单位(B/KB/MB/GB/TB)。 1 GB 否 taskmanager.network.memory.min 网络缓冲区的最小内存大小。该值需带一个大小单位(B/KB/MB/GB/TB)。 64 MB 否 taskmanager.network.request-backoff.initial 输入通道的分区请求的最小退避。 100 否 taskmanager.network.request-backoff.max 输入通道的分区请求的最大退避。 10000 否 taskmanager.registration.timeout TaskManager注册的超时时间,在该时间内未成功注册,TaskManager将终止。该值需带一个时间单位(ms/s/min/h/d)。 5 min 否 resourcemanager.taskmanager-timeout 释放空闲TaskManager的超时(以ms为单位)。 30000 否
  • 配置说明 Flink所有的配置参数都可以在客户端侧进行配置,建议用户直接修改客户端的“flink-conf.yaml”配置文件进行配置,如果通过Manager界面修改Flink服务参数,配置完成之后需要重新下载安装客户端: 配置文件路径:客户端安装路径/Flink/flink/conf/flink-conf.yaml。 文件的配置格式为key: value。 例:taskmanager.heap.size: 1024mb 注意配置项key:与value之间需有空格分隔。
  • 示例 创建视图 create view orders_by_date as select * from orders; 删除视图orders_by_date,如果视图不存在则会报错 DROP VIEW orders_by_date; 删除视图orders_by_date,使用参数IF EXISTS,如果视图存在则删除视图,如果视图不存在,也不会报错 DROP VIEW IF EXISTS orders_by_date;
  • 日志级别 HDFS中提供了如表2所示的日志级别,日志级别优先级从高到低分别是FATAL、ERROR、WARN、INFO、DEBUG,程序会打印高于或等于所设置级别的日志,设置的日志等级越高,打印出来的日志就越少。 表2 日志级别 级别 描述 FATAL FATAL表示系统运行的致命错误信息。 ERROR ERROR表示系统运行的错误信息。 WARN WARN表示当前事件处理存在异常信息。 INFO INFO表示系统及各事件正常运行状态信息。 DEBUG DEBUG表示系统及系统调试信息。 如果您需要修改日志级别,请执行如下操作: 请参考修改集群服务配置参数,进入HDFS的“全部配置”页面。 左边菜单栏中选择所需修改的角色所对应的日志菜单。 选择所需修改的日志级别。 保存配置,在弹出窗口中单击“确定”使配置生效。 配置完成后立即生效,不需要重启服务。
  • 示例 START TRANSACTION; START TRANSACTION ISOLATION LEVEL REPEATABLE READ; START TRANSACTION READ WRITE; START TRANSACTION ISOLATION LEVEL READ COMMITTED, READ ONLY; START TRANSACTION READ WRITE, ISOLATION LEVEL SERIALIZABLE; 不支持嵌套事务,也就是开启事务后,在commit之前不能再开启其它事务。
  • ROW ROW的字段可是任意所支持的数据类型,也支持各字段数据类型不同的混合方式。 --创建ROW表 create table row_tb (id int,col1 row(a int,b varchar)); --插入ROW类型数据 insert into row_tb values (1,ROW(1,'HetuEngine')); --查询数据 select * from row_tb; id | col1 ----|-------------- 1 | {a=1, b=HetuEngine} --字段是支持命名的,默认情况下,Row的字段是未命名的 select row(1,2e0),CAST(ROW(1, 2e0) AS ROW(x BIGINT, y DOUBLE)); _col0 | _col1 ------------------------|-------------- {1, 2.0} | {x=1, y=2.0} (1 row) --命名后的字段,可以通过域操作符"."访问 select col1.b from row_tb; -- HetuEngine --命名和未命名的字段,都可以通过位置索引来访问,位置索引从1开始,且必须是一个常量 select col1[1] from row_tb; -- 1
  • 字符类型 名称 描述 VARCHAR(n) 变长字符串,n指字节长度。 CHAR(n) 定长字符串,不足补空格。n是指字节长度,如不带精度n,默认为1。 VARBINARY 变长二进制数据。需要带上前缀X,如:X'65683F',暂不支持指定长度的二进制字符串。 JSON 取值可以是a JSON object、a JSON array、a JSON number、a JSON string、true、false or null。 STRING 兼容impala的String,底层是varchar。 BINARY 兼容hive的Binary,底层实现为varbinary。 SQL表达式中,支持简单的字符表达式,也支持Unicode方式,一个Unicode字符串是以U&为固定前缀,以4位数值表示的Unicode前需要加转义符。 -- 字符表达式 select 'hello,winter!'; _col0 ------------------ hello,winter! (1 row) -- Unicode 表达式 select U&'Hello winter \2603 !'; _col0 ------------------ Hello winter ☃ ! (1 row) -- 自定义转义符 select U&'Hello winter #2603 !' UESCAPE '#'; _col0 ------------------ Hello winter ☃ ! (1 row) VARBINARY与BINARY。 -- 创建VARBINARY类型或BINARY类型的表 create table binary_tb(col1 BINARY); -- 插入数据 INSERT INTO binary_tb values (X'63683F'); --查询数据 select * from binary_tb ; -- 63 68 3f 在做CHAR 数值比较的时候,在对两个仅尾部空格数不同的CHAR进行比较时,会认为它们是相等的。 SELECT CAST('FO' AS CHAR(4)) = CAST('FO ' AS CHAR(5)); _col0 ------- true (1 row)
  • 时间和日期类型 时间和日期类型目前精确到毫秒。 表3 时间和日期类型 名称 描述 存储空间 DATE 日期和时间。仅支持ISO 8601格式:'2020-01-01' 32位 TIME 不带时区的时间(时、分、秒、毫秒) 例如:TIME '01:02:03.456' 64位 TIME WITH TIMEZONE 带时区的时间(时、分、秒、毫秒),时区用UTC值表示 例如:TIME '01:02:03.456 -08:00' 96位 TIMESTAMP 时间戳 64位 TIMESTAMP WITH TIMEZONE 带时区的时间戳 64位 INTERVAL YEAR TO MONTH 时间间隔字面量,年,月,格式: SY-M S:可选符号(+/-) Y:年数 M:月数 128位 INTERVAL DAY TO SECOND 时间间隔字面量,日,小时,分钟, 秒,精确到毫秒,格式:SD H:M:S.nnn S:可选符号(+/-) D:天数 M:分钟数 S:秒数 nnn:毫秒数 128位 示例: -- 查询日期 SELECT DATE '2020-07-08'; _col0 ------------ 2020-07-08 (1 row) -- 查询时间 SELECT TIME '23:10:15'; _col0 -------------- 23:10:15 (1 row) SELECT TIME '01:02:03.456 -08:00'; _col0 -------------- 01:02:03.456-08:00 (1 row) -- 时间间隔用法 SELECT TIMESTAMP '2015-10-18 23:00:15' + INTERVAL '3 12:15:4.111' DAY TO SECOND; _col0 ------------------------- 2015-10-22 11:15:19.111 (1 row) SELECT TIMESTAMP '2015-10-18 23:00:15' + INTERVAL '3-1' YEAR TO MONTH; _col0 ------------------------- 2018-11-18 23:00:15 (1 row) select INTERVAL '3' YEAR + INTERVAL '2' MONTH ; _col0 ------- 3-2 (1 row) select INTERVAL '1' DAY+INTERVAL '2' HOUR +INTERVAL '3' MINUTE +INTERVAL '4' SECOND ; _col0 ---------------- 1 02:03:04.000 (1 row)
  • UUID 标准UUID (Universally Unique IDentifier),也被称为GUID (Globally Unique IDentifier)。 遵从RFC 4122标准所定义的格式。 示例: select UUID '12151fd2-7586-11e9-8f9e-2a86e4085a59'; _col0 -------------------------------------- 12151fd2-7586-11e9-8f9e-2a86e4085a59 (1 row)
  • HYPERLOGLOG 基数统计。 用HyperLogLog来近似计算唯一数的计数值,其代价要远远小于用count来计算。 参见HyperLogLog函数函数。 HyperLogLog A HyperLogLog sketch可以用来高效的计算distinct()的近似值。 它以一个稀疏的表征开始,然后变成一个密集的表征,此时效率将变得更高。 P4HyperLogLog 类似于A HyperLogLog sketch,但是它以一个密集的表征开始。
  • 浮点型 名称 描述 存储空间 取值范围 字面量 REAL 实数 32位 1.40129846432481707e-45 ~3.40282346638528860e+38,正或负 REAL DOUBLE 双精度浮点数,15到17个有效位,具体取决于使用场景,有效位位数并不取决于小数点位置 64位 4.94065645841246544e-324 ~1.79769313486231570e+308,正或负 DOUBLE FLOAT 单精度浮点数,6到9个有效位,具体取决于使用场景,有效位位数并不取决于小数点位置 32位 1.40129846432481707e-45 ~3.40282346638528860e+38,正或负 FLOAT 用法说明: 分布式查询使用高性能硬件指令进行单精度或者双精度运算时,由于每次执行的顺序不一样,在调用聚合函数,比如SUM(),AVG(),特别是当数据规模非常大时,达到数千万甚至数十亿,其运算结果可能会略有不同。这种情况下,建议使用DECIMAL数据类型来运算。 可以使用别名来指定数据类型。 示例: --创建具有float类型数据的表 CREATE TABLE float_t1 (float_col1 FLOAT) ; --插入具有float类型数据 insert into float_t1 values (float '3.50282346638528862e+38'); --查看数据 SELECT * FROM float_t1; float_col1 ------------ Infinity (1 row) --删除表 DROP TABLE float_t1; 当小数部分为0时,可以通过cast()转为对应范围的整数处理,小数部分会四舍五入。 示例: select CAST(1000.0001 as INT); _col0 ------- 1000 (1 row) select CAST(122.5001 as TINYINT); _col0 ------- 123 (1 row) 使用指数表达式时,可以将字符串转为对应类型。 示例: select CAST(152e-3 as double); _col0 ------- 0.152 (1 row)
  • IPADDRESS IP地址,可以表征IPv4或者IPv6地址。但在系统内,该类型是一个统一的IPv6地址。 对于IPv4的支持,是通过将IPv4映射到IPv6的取值范围(RFC 4291#section-2.5.5.2)来实现的。当创建一个IPv4时,会被映射到IPv6。当格式化时,如果数据是IPv4又会被重新映射为IPv4。 其他的地址则会按照RFC 5952所定义的规范格式来进行格式化。 示例: select IPADDRESS '10.0.0.1', IPADDRESS '2001:db8::1'; _col0 | _col1 ----------|------------- 10.0.0.1 | 2001:db8::1 (1 row)
  • 布尔类型 “真”值的有效文本值是:TRUE、't'、'true'、'1'。 “假”值的有效文本值是:FALSE、'f'、'false'、'0'。 使用TRUE和FALSE是比较规范的用法(也是SQL兼容的用法)。 示例: select BOOLEAN '0'; _col0 ------- false (1 row) select BOOLEAN 'TRUE'; _col0 ------- true (1 row) select BOOLEAN 't'; _col0 ------- true (1 row)
  • 整数类型 表1 整数类型 名称 描述 存储空间 取值范围 字面量 TINYINT 微整数 8位 -128~127 TINYINT SMALLINT 小整数 16位 -32,768 ~ +32,767 SMALLINT INTEGER 整数 32位 -2,147,483,648 ~ +2,147,483,647 INT BIGINT 大整数 64位 -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 BIGINT 示例: --创建具有TINYINT类型数据的表。 CREATE TABLE int_type_t1 (IT_COL1 TINYINT) ; --插入TINYINT类型数据 insert into int_type_t1 values (TINYINT'10'); --查看数据。 SELECT * FROM int_type_t1; it_col1 --------- 10 (1 row) --删除表。 DROP TABLE int_type_t1;
  • 固定精度型 名称 描述 存储空间 取值范围 字面量 DECIMAL 固定精度的十进制数。精度最高支持到38位,但精度小于18位能保障性能最好。 Decimal有两个输入参数: precision:总位数,默认38 scale:小数部分的位数,默认0 说明: 如果小数位为零,即十进制(38,0),则支持最高19位精度。 64位 DECIMAL NUMERIC 同DECIMAL 128位 NUMERIC 表2 字面量示例 字面量示例 数据类型 DECIMAL '0' DECIMAL(1) DECIMAL '12345' DECIMAL(5) DECIMAL '0000012345.1234500000' DECIMAL(20, 10) --创建具有DECIMAL类型数据的表 CREATE TABLE decimal_t1 (dec_col1 DECIMAL(10,3)) ; --插入具有DECIMAL类型数据 insert into decimal_t1 values (DECIMAL '5.325'); --查看数据 SELECT * FROM decimal_t1; dec_col1 --------- 5.325 (1 row) --反例:小数位数超出定义长度,sql执行失败 insert into decimal_t1 values (DECIMAL '5.3253'); Query 20201126_034601_00053_tq98i@default@HetuEngine failed: Insert query has mismatched column types: Table: [decimal(10,3)], Query: [decimal(5,4)] --删除表 DROP TABLE decimal_t1; --创建NUMERIC 类型表 CREATE TABLE tb_numberic_hetu(col1 NUMERIC(9,7)); CREATE TABLE --插入数据 INSERT INTO tb_numberic_hetu values(9.12); INSERT: 1 row --查看数据 SELECT * FROM tb_numberic_hetu; col1 ------------ 9.1200000 (1 row)
  • Qualifying Column Names 当JOIN的两个relation有相同的列名时,列引用必须使用relation别名(如果relation有别名)或relation名称进行限定: SELECT nation.name, region.name FROM nation CROSS JOIN region; SELECT n.name, r.name FROM nation AS n CROSS JOIN region AS r; SELECT n.name, r.name FROM nation n CROSS JOIN region r;
  • SEMI JOIN、ANTI JOIN 当一张表在另一张表找到匹配的记录之后,半连接(semi-join)返回第一张表中的记录。与条件连接相反,即使在右节点中找到几条匹配的记录,左节点的表也只会返回一条记录。另外,右节点的表一条记录也不会返回。半连接通常使用IN或EXISTS作为连接条件。 而anti-join则与semi-join相反,即当在第二张表没有发现匹配记录时,才会返回第一张表里的记录;当使用not exists/not in的时候会用到。 其他支持的条件包括如下内容: where子句中的多个条件 别名关系 下标表达式 解引用表达式 强制转换表达式 特定函数调用 目前,只在如下情况下支持多个semi/anti join表达式:第一个表中的列在其直接后续的join表达式中被查询,且不与其它join表达式有关系。 示例如下:
  • 统计聚合函数 corr(y,x) 描述:返回输入值的相关系数。 select corr(y,x) from (values (1,5),(2,6),(3,7),(4,8)) as t(x,y);-- 1.0 covar_pop(y, x) 描述:返回输入值的总体协方差。 select covar_pop(y,x) from (values (1,5),(2,6),(3,7),(4,8)) as t(x,y); --1.25 covar_samp(y, x) 描述:返回输入值的样本协方差。 select covar_samp(y,x) from (values (1,5),(2,6),(3,7),(4,8)) as t(x,y);-- 1.6666666 kurtosis(x) 描述:峰度又称峰态系数,表征概率密度分布曲线在平均值处峰值高低的特征数,即是描述总体中所有取值分布形态陡缓程度的统计量。直观看来,峰度反映了峰部的尖度。这个统计量需要与正态分布相比较。 定义上峰度是样本的标准四阶中心矩(standardized 4th central moment)。 随机变量的峰度计算方法为随机变量的四阶中心矩与方差平方的比值。 具体计算公式为: select kurtosis(x) from (values (1),(2),(3),(4)) as t(x); -- -1.1999999999999993 regr_intercept(y, x) 描述:返回输入值的线性回归截距。y是从属值。x是独立值。 select regr_intercept(y,x) from (values (1,5),(2,6),(3,7),(4,8)) as t(x,y);-- 4.0 regr_slope(y, x) 描述:返回输入值的线性回归斜率。y是从属值。x是独立值。 select regr_slope(y,x) from (values (1,5),(2,6),(3,7),(4,8)) as t(x,y);-- 1.0 skewness(x) 描述:返回所有输入值的偏斜度。 select skewness(x) from (values (1),(2),(3),(4)) as t(x); -- 0.0 stddev(x) 描述:stedev_samp()的别名。 stddev_pop(x) 描述:返回所有输入值的总体标准差。 select stddev_pop(x) from (values (1),(2),(3),(4)) as t(x);-- 1.118033988749895 stddev_samp(x) 描述:返回所有输入值的样本标准偏差。 select stddev_samp(x) from (values (1),(2),(3),(4)) as t(x);-- 1.2909944487358056 variance(x) 描述:var_samp()的别名。 var_pop(x) 描述:返回所有输入值的总体方差。 select var_pop(x) from (values (1),(2),(3),(4)) as t(x);-- 1.25 var_samp(x) 描述:返回所有输入值的样本方差。 select var_samp(x) from (values (1),(2),(3),(4)) as t(x);-- 1.6666666666666667
  • Bitwise聚合函数 bitwise_and_agg(x) 描述:用补码表示输入字段x的按位与,返回类型为bigint。 select bitwise_and_agg(x) from (values (31),(32)) as t(x);-- 0 bitwise_or_agg(x) 描述:用补码表示输入字段x的按位或,返回类型为bigint。 select bitwise_or_agg(x) from (values (31),(32)) as t(x);-- 63
  • 示例 通过表orders创建一个视图test: CREATE VIEW test (oderkey comment 'orderId',orderstatus comment 'status',half comment 'half') AS SELECT orderkey, orderstatus, totalprice / 2 AS half FROM orders; 通过表orders的汇总结果创建视图orders_by_date: CREATE VIEW orders_by_date AS SELECT orderdate, sum(totalprice) AS price FROM orders GROUP BY orderdate; 创建一个新视图来替换已经存在的视图: CREATE OR REPLACE VIEW test AS SELECT orderkey, orderstatus, totalprice / 4 AS quarter FROM orders 创建一个视图的同时设置表属性: create or replace view view1 comment 'the first view' TBLPROPERTIES('format'='orc') as select * from fruit;
  • 限制 仅Hive数据源的Catalog支持视图的列描述。 在HetuEngine中创建的视图,视图的定义以编码方式存储在数据源里。在数据源可以查询到该视图,但无法对该视图执行操作。 视图是只读的,不可对它执行LOAD、INSERT操作。 视图可以包含ORDER BY和LIMIT子句,如果关联了该视图的查询语句也包含了这些子句,那么查询语句中的ORDER BY和LIMIT子句将以视图的结果为基础进行运算。
  • 描述 “ALTER VIEW view_name AS select_statement;”用于改变已存在的视图的定义,语法效果与CREATE OR REPLACE VIEW类似。 “ALTER VIEW view_name SET TBLPROPERTIES table_properties;”中table_properties格式为 (property_name = property_value, property_name = property_value, ...)。 视图可以包含Limit和ORDER BY子句,如果关联视图的查询语句也包含了这类子句,则最后执行结果将根据视图的子句运算后得到。例如视图V指定了返回5条数据,而关联查询为select * from V limit 10,则最终只有5条数据返回。
共100000条