华为云用户手册

  • 配置ClickHouse默认用户密码 使用root用户登录ClickHouse安装节点,切换到omm用户,进入“$BIGDATA_HOME/ FusionInsight _ClickHouse_*/install/FusionInsight-ClickHouse-*/clickhouse/clickhouse_change_password”目录。 su - omm cd $BIGDATA_HOME/FusionInsight_ClickHouse_*/install/FusionInsight-ClickHouse-*/clickhouse/clickhouse_change_password 执行如下命令修改default或clickhouse用户密码: ./change_password.sh 如下所示:以clickhouse用户为例,按照提示输入clickhouse和密码,等待密码修改完成。 密码复杂度要求: 密码长度限制是8~64位。 至少包含一个小写字母、一个大写字母、一个数字和一个特殊字符,支持的特殊字符包含-%;[]{}@_。 查看密码修改结果: 登录到ClickHouse Server节点的,查看“${BIGDATA_HOME}/FusionInsight_ClickHouse_*/*_ClickHouseServer/etc/users.xml”文件中参数“password_sha256_hex”的值,即为存储修改后的密码。 cd ${BIGDATA_HOME}/FusionInsight_ClickHouse_*/*_ClickHouseServer/etc/ vi users.xml 如下所示:用password_sha256_hex来存储修改后的密码。配置文件中包含认证密码信息可能存在安全风险,建议当前场景执行完毕后删除相关配置文件或加强安全管理。
  • 操作步骤 以root用户登录待安装MySQL客户端的节点。 执行以下命令查看MySQL客户端依赖库ncurses-libs的版本: rpm -qa | grep ncurses 从https://downloads.mysql.com/archives/community/下载MySQL客户端对应的软件包,建议安装8.x版本,以Red Hat发行版本为例: 如果2的依赖库是6.x建议下载对应OS Version为Red Hat 8的MySQL软件包。 如果2的依赖库是5.x建议下载对应OS Version为Red Hat 7的MySQL软件包。 例如需安装的MySQL 8.0.22客户端需下载如下四个软件包: 将下载的软件包上传到待安装MySQL客户端的节点上。 在上传的文件所在目录执行以下命令,安装MySQL客户端及对应的依赖包: rpm -ivh mysql-community-client-8.0.22-1.el8.x86_64.rpm --nodeps --force rpm -ivh mysql-community-client-plugins-8.0.22-1.el8.x86_64.rpm --nodeps --force rpm -ivh mysql-community-common-8.0.22-1.el8.x86_64.rpm --nodeps --force rpm -ivh mysql-community-libs-8.0.22-1.el8.x86_64.rpm --nodeps --force 执行以下命令查看MySQL客户端的版本: mysql --version MySQL客户端安装成功后,即可访问Doris,详细操作请参见快速使用Doris。
  • 配置参数 在Spark客户端的“{客户端安装目录}/Spark/spark/conf/spark-defaults.conf”配置文件中进行设置,修改如下参数: 参数 说明 默认值 spark.sql.mergeSmallFiles.enabled 设置为true,Spark写入目标表时会判断是否写入了小文件,如果发现有小文件,则会启动合并小文件的job。 false spark.sql.mergeSmallFiles.threshold.avgSize 如果某个分区的平均文件大小小于该值,则启动小文件合并。 16MB spark.sql.mergeSmallFiles.maxSizePerTask 合并后的每个文件大小目标大小。 256MB spark.sql.mergeSmallFiles.moveParallelism 当不需要合并小文件后时,将临时文件移动到最终目录的并行度。 10000
  • 问题 Spark客户端设置fs.obs.hdfs.trash.version=1不生效,drop table后文件在回收站的存放路径不改变。 通常,默认情况: 当fs.obs.hdfs.trash.version=2时,回收站路径为:/user/.Trash/${userName}/Current 当fs.obs.hdfs.trash.version=1时,回收站路径为:/user/${userName}/.Trash/Current
  • 处理步骤 如果运行任务的BE节点故障,需查看具体的故障原因再进行解决。 如果RPC源端有大量未发送的数据超过了阈值,可设置如下参数: brpc_socket_max_unwritten_bytes:用于设置未发送的数据量的阈值,默认为1GB。如果未发送数据量超过该值,则会报OVERCROWDED错,可适当调大该值。 tablet_writer_ignore_eovercrowded:是否忽略数据导入过程中出现的OVERCROWDED错误,默认值为“false”。该参数主要用于避免导入失败,以提高导入的稳定性。 max_body_size:用于设置RPC的包大小阈值 ,默认为3GB。如果查询中带有超大 String 类型,或者bitmap类型数据时,可以通过修改该参数规避。
  • 使用Payload Spark建表时指定Payload create table hudi_test(id int, comb int, price string, name string, par string) using hudi options( primaryKey = "id", preCombineField = "comb", payloadClass="org.apache.hudi.common.model.OverwriteWithLatestAvroPayload") partitioned by (par); Datasource方式写入时指定Payload data.write.format("hudi"). option("hoodie.datasource.write.table.type", COW_TABLE_TYPE_OPT_VAL). option("hoodie.datasource.write.precombine.field", "comb"). option("hoodie.datasource.write.recordkey.field", "id"). option("hoodie.datasource.write.partitionpath.field", "par"). option("hoodie.datasource.write.payload.class", "org.apache.hudi.common.model.DefaultHoodieRecordPayload"). option("hoodie.datasource.write.keygenerator.class", "org.apache.hudi.keygen.SimpleKeyGenerator"). option("hoodie.datasource.write.operation", "upsert"). option("hoodie.datasource.hive_sync.enable", "true"). option("hoodie.datasource.hive_sync.partition_fields", "par"). option("hoodie.datasource.hive_sync.partition_extractor_class", "org.apache.hudi.hive.MultiPartKeysValueExtractor"). option("hoodie.datasource.hive_sync.table", "hudi_test"). option("hoodie.datasource.hive_sync.use_jdbc", "false"). option("hoodie.upsert.shuffle.parallelism", 4). option("hoodie.datasource.write.hive_style_partitioning", "true"). option("hoodie.table.name", "hudi_test").mode(Append).save(s"/tmp/hudi_test")
  • 常用Payload DefaultHoodieRecordPayload Hudi中默认使用DefaultHoodieRecordPayload,该Payload通过比较增量数据与存量数据的preCombineField字段值的大小来决定同主键的存量数据是否能被同主键的增量数据更新。在同主键的增量数据的preCombineField字段值绝对大于同主键的存量数据的preCombineField字段值时,同主键的增量数据将会被更新。 OverwriteWithLatestAvroPayload 该Payload保证同主键的增量数据永远都会更新至同主键的存量数据中。 PartialUpdateAvroPayload 该Payload继承了OverwriteNonDefaultsWithLatestAvroPayload,它可以保证在任何场景下增量数据中的null值不会覆盖存量数据。
  • Payload介绍 Payload是Hudi实现数据增量更新和删除的关键,它可以帮助Hudi在 数据湖 中高效的管理数据变更。Hudi Payload的格式是基于Apache Avro的,它使用了Avro的schema来定义数据的结构和类型。Payload可以被序列化和反序列化,以便在Hudi中进行数据的读取和写入。总之,Hudi Payload是Hudi的一个重要组成部分,它提供了一种可靠的、高效的、可扩展的方式来管理大规模数据湖中的数据变更。
  • 前提条件 集群已安装CDL、Hudi服务且运行正常。 Opengauss数据库需要开启预写日志功能,操作步骤请参考Opengauss数据库开启预写日志功能。 在FusionInsight Manager中创建一个人机用户,例如“cdluser”,加入用户组cdladmin、hadoop、kafka、supergroup,主组选择“cdladmin”组,关联角色“System_administrator”。
  • 回答 spark.sql.hive.convertInsertingPartitionedTable开关控制了Hive和Datasource表的插入写操作逻辑,使用Hive表时逻辑不会自动格式化时间戳,使用Datasource表时会自动格式化时间戳。 如果写入的分区字段是a='2016-8-1 11:45:5'会自动格式化成a='2016-08-01 11:45:05',此时查询使用a='2016-8-1 11:45:5'会报错。 正确查询方式如下: spark.sql.hive.convertInsertingPartitionedTable=true时使用datasource表逻辑,使用如下方式即可以正常查询: desc formatted test_hive_orc_snappy_internal_table partition(a='2016-08-01 11:45:05');
  • 操作步骤 使用MySQL客户端连接Doris数据库时,在命令中新增“--enable-cleartext-plugin”,命令如下: mysql --enable-cleartext-plugin -u数据库登录用户 -p数据库登录用户密码 -P数据库连接端口 -hDoris FE实例IP地址 在安装了MySQL客户端的节点执行以下命令启用mysql_clear_password插件,再重新连接Doris即可。 export LIBMYSQL_ENABLE_CLEARTEXT_PLUGIN=1
  • 基于索引查询HBase表数据 在具有索引的用户表中,可以使用SingleColumnValueFilter来查询数据。当查询条件可以命中索引时,查询速度远快于原表查询。 索引的命中规则如下: 多个AND条件查询 当用于查询的列至少包含索引的一个列时,使用索引会提高查询性能。 例如,为C1、C2和C3创建组合索引。 该索引在以下情况下生效: Filter_Condition(IndexCol1)AND Filter_Condition(IndexCol2)AND Filter_Condition(IndexCol3) Filter_Condition(IndexCol1)AND Filter_Condition(IndexCol2) Filter_Condition(IndexCol1)AND Filter_Condition(IndexCol3) Filter_Condition(IndexCol1) 该索引在下列情况下不生效: Filter_Condition(IndexCol2)AND Filter_Condition(IndexCol3) Filter_Condition(IndexCol2) Filter_Condition(IndexCol3) 当在查询中使用“索引列”和“非索引列”进行过滤时,使用索引可提高查询性能。当非索引列命中覆盖列时,查询性能最优;如果有需经常查询的非索引列,建议定义为覆盖列。例如: Filter_Condition(IndexCol1)AND Filter_Condition(NonIndexCol1) Filter_Condition(IndexCol1)AND Filter_Condition(IndexCol2)AND Filter_Condition(NonIndexCol1) 当多个列用于查询时,只能为组合索引中的最后一列指定值范围,而其他列只能设置为指定值。 例如,为C1、C2和C3创建组合索引。在范围查询中,只能为C3设置数值范围,过滤条件为“C1 = XXX,C2 = XXX,C3 = 数值范围”。 多个OR条件查询 例如,为C1、C2和C3创建组合索引。 仅对索引列首个字段进行过滤时(支持范围过滤),使用索引可提高查询性能。 Filter_Condition(IndexCol1)OR Filter_Condition(IndexCol1)OR Filter_Condition(IndexCol1) 对非索引和非索引列进行过滤时,无法命中索引,查询性能不会提高。 Filter_Condition(IndexCol1)OR Filter_Condition(NonIndexCol1) 组合查询时,最外层包含OR条件时无法命中索引,查询性能不会提高。 Filter_Condition(IndexCol1)OR Filter_Condition(NonIndexCol1) (Filter_Condition(IndexCol1)AND Filter_Condition(IndexCol2))OR(Filter_Condition(NonIndexCol1)) 减少OR条件使用,尤其是OR条件+范围条件,命中索引的情况下也会造成大范围查询,速度较慢。
  • HBase全局二级索引API介绍说明 使用全局索引的API都在类“org.apache.hadoop.hbase.hindex.global.GlobalIndexAdmin”中,相关接口介绍如下: 操作 接口 描述 添加索引 addIndices() 将索引添加到没有数据的表中。调用此接口会将用户指定的索引添加到表中,但会跳过生成索引数据。该接口的使用场景为用户想要在具有大量预先存在用户数据的表上批量添加索引,然后使用GlobalTableIndexer工具来构建索引数据。 addIndicesWithData() 将索引添加到有数据的表中。此方法将用户指定的索引添加到表中,并会对已经存在的用户数据创建对应的索引数据,也可先调用该方法生成索引再在存入用户数据的同时生成索引数据。当数据表中存在大量数据时,不建议使用此接口。 删除索引 dropIndices() 仅删除索引,索引元数据与索引数据均会被删除,在此操作之后,索引不能用于scan/filter操作。 索引状态修改 alterGlobalIndicesUnusable() 禁用用户指定的索引,使其不再可用于scan/filter操作。 alterGlobalIndicesActive() 启用用户指定的索引,使其可用于scan/filter操作。 alterGlobalIndicesInactive() 禁用用户指定的索引,且放弃生成索引数据,不再可用于scan/filter操作,通常用于索引修复流程。 查看已创建的索引 listIndices() 可用于列出给定表中的所有索引。 父主题: HBase常见问题
  • 检查全局二级索引数据一致性 在HBase客户端执行以下命令可检查数据一致性,如果不一致,将重新构建索引数据。一致性检查结果会保存到“{数据表所在的NameSpace}:GSI_INCONSISTENCY_TABLE”表中。 hbase org.apache.hadoop.hbase.hindex.global.tools.GlobalHIndexConsistencyTool -dt table1 -n idx3 -src BOTH -r 相关参数介绍如下: -dt,--data-table:要进行一致性检查的数据表名称。 -n,--index-name:要进行一致性检查的索引名称。 -src,--source:检查模式选择,默认为“BOTH”,支持以下模式: INDEX_TABLE_SOURCE:索引表作为源表。 DATA_TABLE_SOURCE:数据表作为源表。 BOTH:索引表和数据表均作为源表。 -r,--repair:索引数据修复选项,添加此参数,表示检查后进行修复。 -sc,--scan-caching(可选) :一致性检查/修复的MapReduce任务中scan caching大小。
  • 批量构建全局二级索引数据 只有处于INACTIVE状态的索引才能进行批量构建,如需重建索引数据,请先修改索引状态。 数据表中存在大量数据时,构建耗时较长,建议将nohup命令放在后台执行,避免操作被意外中断。 在HBase客户端执行以下命令可批量构建已有数据的索引数据: hbase org.apache.hadoop.hbase.hindex.global.mapreduce.GlobalTableIndexer -Dtablename.to.index='table' -Dindexnames.to.build='idx1' 相关参数介绍如下: tablename.to.index:表示需修改索引状态的数据表的名称。 indexnames.to.build:指定的需要批量生成数据的索引名,可以同时指定多个,用#号分隔。 hbase.gsi.cleandata.enabled(可选):表示构建索引数据前是否需要清空索引表,默认值为“false”。 hbase.gsi.cleandata.timeout(可选):表示构建索引数据前等待清空索引表超时时间,默认值为“1800”,单位为:秒。
  • 索引状态介绍 索引状态反映了索引当前的使用情况,全局二级索引支持以下五种状态: ACTIVE:索引正常,可以正常读写。 UNUSABLE:索引被禁用,索引数据会正常写入,查询时无法使用这个索引。 INACTIVE:索引异常,索引数据与数据表不一致,跳过生成该索引的索引数据,查询数据时无法使用该索引。 BUILDING:索引数据正常批量生成,索引数据生成工具执行结束会自动转换到ACTIVE状态,此状态下可以正常读写。 DROPPING:索引正在被删除,跳过生成该索引的索引数据,查询数据时无法使用该索引。 基于工具的索引状态修改,支持图1所示的状态转换。 图1 索引状态转换图
  • 删除HBase全局二级索引 在HBase客户端执行以下命令可删除某个索引: hbase org.apache.hadoop.hbase.hindex.global.mapreduce.GlobalTableIndexer -Dtablename.to.index='table' -Dindexnames.to.drop='idx1#idx2' 相关参数介绍如下: tablename.to.index:表示需删除的索引所在的表名称。 indexnames.to.drop:表示需要删除的索引名称,可以同时指定多个,用#号分隔。
  • 处理步骤 登录安装了MySQL的节点,连接Doris数据库。 调用BE的check_tablet_segment_lost请求自动修复丢失的副本。 curl -X POST http://192.168.67.78:29986/api/check_tablet_segment_lost?repair=true ( 192.168.67.78为异常的BE节点IP地址,29986为BE的HTTP Server的服务端口,可在Manager的Doris配置界面搜索“webserver_port”查看。 执行以下命令,获取DetailCmd。 show tablet tabletId 执行DetailCmd,当异常节点的副本已经被移除时,再次进行业务查询正常即可。
  • 原因分析 Doris支持一个BE节点配置多个存储路径,并支持指定路径的存储介质属性,如SSD或HDD。通常情况下,每块盘配置一个存储路径即可。 如果“be.conf”中只配置了SSD的介质,而FE中参数“default_storage_medium”默认为HDD,因此建表时会发现没有HDD介质的存储而报错。Doris并不会自动感知存储路径所在磁盘的实际存储介质类型,需要用户在路径配置中显式的表示。“.HDD”和“.SSD”只是用于标识存储目录“相对”的“低速”和“高速”之分,而并不是标识实际的存储介质类型,所以如果BE节点上的存储路径没有介质区别,则无需填写后缀。
  • 前提条件 已创建包含Doris服务的集群,集群内各服务运行正常。 待连接Doris数据库的节点与 MRS 集群网络互通。 创建具有Doris管理权限的用户。 集群已启用Kerberos认证(安全模式) 在FusionInsight Manager中创建一个人机用户,例如“dorisuser”,创建一个拥有“Doris管理员权限”的角色绑定给该用户。 使用新建的用户dorisuser重新登录FusionInsight Manager,修改该用户初始密码。 集群未启用Kerberos认证(普通模式) 使用admin用户连接Doris后,创建具有管理员权限的角色并绑定给用户。 已安装MySQL客户端,相关操作可参考使用MySQL客户端连接Doris。 如果Doris通过Broker Load跨集群导入数据,需要配置跨集群互信,相关操作可参考配置跨Manager集群互信。
  • 基础概念 Internal Catalog Doris原有的Database和Table都将归属于Internal Catalog。Internal Catalog是内置的默认Catalog,用户不可修改或删除。 External Catalog 可以通过CREATE CATA LOG 命令创建一个External Catalog,创建后,可以通过SHOW CATALOGS命令查看已创建的Catalog。 切换Catalog 用户登录Doris后,默认进入Internal Catalog,因此默认的数据库使用和之前版本并无差别,可以直接使用SHOW DATABASES,USE DB等命令查看和切换数据库。 用户可以通过SWITCH命令切换Catalog,例如: SWITCH internal; SWITCH hive_catalog; 切换后,可以直接通过SHOW DATABASES,USE DB等命令查看和切换对应Catalog中的Database。Doris会自动同步Catalog中的Database和Table。用户可以像使用Internal Catalog一样,对External Catalog中的数据进行查看和访问。 当前,Doris只支持对External Catalog中的数据进行只读访问。 删除Catalog External Catalog中的Database和Table都是只读的,但是可以删除Catalog(Internal Catalog无法删除)。可以通过DROP CATALOG命令删除一个External Catalog。 该操作仅会删除Doris中该Catalog的映射信息,并不会修改或变更任何外部数据目录的内容。 Resource Resource是一组配置的集合。用户可以通过CREATE RESOURCE命令创建一个Resource,之后可以在创建Catalog时使用这个Resource。 一个Resource可以被多个Catalog使用,以复用其中的配置。
  • 前提条件 已创建包含Doris服务的集群,集群内各服务运行正常。 待连接Doris数据库的节点与MRS集群网络互通。 已安装MySQL客户端,相关操作可参考使用MySQL客户端连接Doris章节。 创建具有Doris管理权限的用户。 集群已启用Kerberos认证(安全模式) 在FusionInsight Manager中创建一个人机用户,例如“dorisuser”,创建一个拥有“Doris管理员权限”的角色绑定给该用户。 使用新建的用户dorisuser重新登录FusionInsight Manager,修改该用户初始密码。 集群未启用Kerberos认证(普通模式) 使用admin用户连接Doris后,创建具有管理员权限的角色并绑定给用户。 已参考手动备份Doris数据完成备份需要恢复的Doris表或分区数据。
  • 数据恢复原理介绍 Doris数据恢复操作需指定一个远端仓库中已存在的备份数据,再将备份数据恢复到本地集群中。当提交Restore请求后,系统内部会做如下操作: 在本地创建对应的元数据 系统会在本地集群中创建恢复对应的表分区等结构。创建完成后,该表可见,但是不可访问。 本地snapshot 将在本地集群中创建的表做一个快照,是一个空快照(刚创建的表没有数据),用于在Backend上产生对应的快照目录,接收从远端仓库下载的快照文件。 下载快照 远端仓库中的快照文件,会被下载到对应的生成的快照目录中,由各个Backend并发完成。 生效快照 快照下载完成后,要将各个快照映射为当前本地表的元数据。然后重新加载这些快照,使之生效,完成最终的恢复作业。
  • 数据备份原理介绍 备份操作是将指定表或分区的数据,直接以Doris存储的文件的形式,上传到远端仓库中进行存储。当用户提交Backup请求后,系统内部会做如下操作: 快照及快照上传 备份都是对快照进行操作,快照阶段会对指定的表或分区数据文件进行快照。快照只是对当前数据文件产生一个硬链,耗时较少。快照后,对表进行的更改、导入等操作都不再影响备份的结果。快照完成后,系统会开始对这些快照文件进行逐一上传,由各个Backend并发完成。 元数据准备及上传 数据文件快照上传完成后,Frontend会首先将对应元数据写成本地文件,然后通过Broker将本地元数据文件上传到远端仓库,完成备份作业操作。 如果备份的表是动态分区表,备份之后会自动禁用动态分区属性,在执行数据恢复操作前需手动将该表的动态分区属性启用,命令为: ALTER TABLE tbl1 SET ("dynamic_partition.enable"="true") 数据备份操作不会保留表的colocate_with属性。
  • 前提条件 已创建包含Doris服务的集群,集群内各服务运行正常。 待连接Doris数据库的节点与MRS集群网络互通。 已安装MySQL客户端,相关操作可参考使用MySQL客户端连接Doris章节。 创建具有Doris管理权限的用户。 集群已启用Kerberos认证(安全模式) 在FusionInsight Manager中创建一个人机用户,例如“dorisuser”,创建一个拥有“Doris管理员权限”的角色绑定给该用户。 使用新建的用户dorisuser重新登录FusionInsight Manager,修改该用户初始密码。 集群未启用Kerberos认证(普通模式) 使用admin用户连接Doris后,创建具有管理员权限的角色并绑定给用户。
  • 聚合模型示例 聚合列不支持修改聚合类型。 在col1列后添加new_col列(key列): ALTER TABLE example_db.my_table ADD COLUMN new_col INT DEFAULT "0" AFTER col1; 在col1后添加new_col列(Value列SUM聚合类型): ALTER TABLE example_db.my_table ADD COLUMN new_col INT SUM DEFAULT "0" AFTER col1; 修改col1列的类型为BIGINT(Key列): ALTER TABLE example_db.my_table MODIFY COLUMN col1 BIGINT DEFAULT "1"; 修改col1列的类型为BIGINT(Value列): ALTER TABLE example_db.my_table MODIFY COLUMN col1 BIGINT MAX DEFAULT "1"; 删除col1列: ALTER TABLE example_db.my_table DROP COLUMN col1;
  • 非聚合模型示例 在col1列后添加new_col列(添加Key列): ALTER TABLE example_db.my_table ADD COLUMN new_col INT KEY DEFAULT "0" AFTER col1; 在col1列后添加new_col列(添加Value列): ALTER TABLE example_db.my_table ADD COLUMN new_col INT DEFAULT "0" AFTER col1; 修改col1列的类型为BIGINT(Key列): ALTER TABLE example_db.my_table MODIFY COLUMN col1 BIGINT KEY DEFAULT "1"; 修改col1列的类型为BIGINT(Value列): ALTER TABLE example_db.my_table MODIFY COLUMN col1 BIGINT DEFAULT "1"; 删除col1列: ALTER TABLE example_db.my_table DROP COLUMN col1;
  • 使用示例 创建一个名为table1的普通表: CREATE TABLE example_db.table1 ( k1 TINYINT, k2 DECIMAL(10, 2) DEFAULT "10.5", k3 CHAR(10) COMMENT "string column", k4 INT NOT NULL DEFAULT "1" COMMENT "int column" ) COMMENT "table comment" DISTRIBUTED BY HASH(k1) BUCKETS 32; 创建一个名为table2的分区表。 使用event_day列作为分区列,建立3个分区:p201706、p201707、p201708,取值为: p201706:范围为[最小值, 2017-07-01) p201707:范围为[2017-07-01, 2017-08-01) p201708:范围为[2017-08-01, 2017-09-01) 每个分区使用siteid进行哈希分桶,桶数为10。 创建表命令如下: CREATE TABLE table2 ( event_day DATE, siteid INT DEFAULT '10', citycode SMALLINT, username VARCHAR(32) DEFAULT '', pv BIGINT SUM DEFAULT '0' ) AGGREGATE KEY(event_day, siteid, citycode, username) PARTITION BY RANGE(event_day) ( PARTITION p201706 VALUES LESS THAN ('2017-07-01'), PARTITION p201707 VALUES LESS THAN ('2017-08-01'), PARTITION p201708 VALUES LESS THAN ('2017-09-01') ) DISTRIBUTED BY HASH(siteid) BUCKETS 10 PROPERTIES("replication_num" = "2"); Doris创建表时限制至少指定2副本,以保证高可用。 可以对Table增加上卷表(Rollup)以提高查询性能。 表的列的Null属性默认为true,会对查询性能有一定的影响。 Doris表必须指定分桶列。 查看表内容: SHOW TABLES; +----------------------+ | Tables_in_example_db | +----------------------+ | table1 | | table2 | +----------------------+ 2 rows in set (0.01 sec) DESC table1; +----------+-------------+------+-------+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+-------------+------+-------+---------+-------+ | siteid | int(11) | Yes | true | 10 | | | citycode | smallint(6) | Yes | true | N/A | | | username | varchar(32) | Yes | true | | | | pv | bigint(20) | Yes | false | 0 | SUM | +----------+-------------+------+-------+---------+-------+ 4 rows in set (0.00 sec) DESC table2; +-----------+-------------+------+-------+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-----------+-------------+------+-------+---------+-------+ | event_day | date | Yes | true | N/A | | | siteid | int(11) | Yes | true | 10 | | | citycode | smallint(6) | Yes | true | N/A | | | username | varchar(32) | Yes | true | | | | pv | bigint(20) | Yes | false | 0 | SUM | +-----------+-------------+------+-------+---------+-------+ 5 rows in set (0.00 sec)
  • 基本语法 CREATE TABLE [IF NOT EXISTS] [database.]table ( column_definition_list, [index_definition_list] ) [engine_type] [keys_type] [table_comment] [partition_info] distribution_desc [rollup_list] [properties] [extra_properties]
  • 示例 导出到HDFS 将简单查询结果导出到文件“hdfs://path/to/result.txt”中,并指定导出格式为 CS V。 集群已启用Kerberos认证(安全模式) SELECT * FROM example_db.test_export_tbl INTO OUTFILE "hdfs://192.168.67.78:25000/tmp/result_" FORMAT AS CSV PROPERTIES ( "broker.name" = "broker_192_168_67_78", "column_separator" = ",", "line_delimiter" = "\n", "max_file_size" = "100MB", "broker.hadoop.security.authentication" = "kerberos", "broker.kerberos_principal" = "doris/hadoop.hadoop.com@HADOOP.COM", "broker.kerberos_keytab" = "${BIGDATA_HOME}/FusionInsight_Doris_8.3.0/install/FusionInsight-Doris-1.2.3/doris-fe/bin/doris.keytab" ); 集群未启用Kerberos认证(普通模式) SELECT * FROM example_db.test_export_tbl INTO OUTFILE "hdfs://192.168.67.78:25000/tmp/result_" FORMAT AS CSV PROPERTIES ( "broker.name" = "broker_192_168_67_78", "column_separator" = ",", "line_delimiter" = "\n", "max_file_size" = "100MB", "broker.username"="hdfs", "broker.password"="" ); 导出到本地文件 导出到本地文件时需要先在“fe.conf”中配置enable_outfile_to_local=true。 select * from tbl1 limit 10 INTO OUTFILE "file:///home/work/path/result_";
共100000条