华为云用户手册

  • 日志级别 Hue提供了如表2所示的日志级别。 日志的级别优先级从高到低分别是ERROR、WARN、INFO、DEBUG,程序会打印高于或等于所设置级别的日志,设置的日志等级越高,打印出来的日志就越少。 表2 日志级别 级别 描述 ERROR ERROR表示系统运行的错误信息。 WARN WARN表示当前事件处理存在异常信息。 INFO INFO表示记录系统及各事件正常运行状态信息。 DEBUG DEBUG表示记录系统及系统的调试信息。 如果您需要修改日志级别,请执行如下操作: 参考修改集群服务配置参数进入Hue服务“全部配置”页面。 在左侧导航栏选择需修改的角色所对应的“日志”菜单。 在右侧选择所需修改的日志级别。 保存配置,在弹出窗口中单击“确定”使配置生效。 重新启动配置过期的服务或实例以使配置生效。
  • 日志描述 日志路径:Hue相关日志的默认存储路径为“/var/log/Bigdata/hue”(运行日志),“/var/log/Bigdata/audit/hue”(审计日志)。 日志归档规则:Hue的日志启动了自动压缩归档功能,默认情况下,当“access.log”、“error.log”、“runcpserver.log”和“hue-audits.log”大小超过5MB的时候,会自动压缩。最多保留最近的20个压缩文件,压缩文件保留个数和压缩文件阈值可以配置。 表1 Hue日志列表 日志类型 日志文件名 描述 运行日志 access.log 访问日志。 error.log 错误日志。 gsdb_check.log gaussDB检查日志。 kt_renewer.log Kerberos认证日志。 kt_renewer.out.log Kerberos认证日志的异常输出日志。 runcpserver.log 操作记录日志。 runcpserver.out.log 进程运行异常日志。 supervisor.log 进程启动日志。 supervisor.out.log 进程启动异常日志。 dbDetail.log 数据库初始化日志 initSecurityDetail.log keytab文件下载初始化日志。 postinstallDetail.log Hue服务安装后工作日志。 prestartDetail.log Prestart日志。 statusDetail.log Hue服务健康状态日志。 startDetail.log 启动日志。 get-hue-ha.log Hue HA状态日志。 hue-ha-status.log Hue HA状态监控日志。 get-hue-health.log Hue健康状态日志。 hue-health-check.log Hue健康检查日志。 hue-refresh-config.log Hue配置刷新日志。 hue-script-log.log Manager界面的Hue操作日志。 hue-service-check.log Hue服务状态监控日志。 db_pwd.log Hue连接DBService数据库密码修改日志 modifyDBPwd_日期.log - watch_config_update.log 参数更新日志。 审计日志 hue-audits.log 审计日志。
  • 回答 当执行器中此次数据查询和加载所需要的堆外内存不足时,便会发生此异常。 在这种情况下,请增大“carbon.unsafe.working.memory.in.mb”和“spark.yarn.executor.memoryOverhead”的值。 详细信息请参考如何在CarbonData中配置非安全内存? 该内存被数据查询和加载共享。所以如果加载和查询需要同时进行,建议将“carbon.unsafe.working.memory.in.mb”和“spark.yarn.executor.memoryOverhead”的值配置为2048 MB以上。 可以使用以下公式进行估算: 数据加载所需内存: (“carbon.number.of.cores.while.loading”的值[默认值 = 6]) x 并行加载数据的表格 x (“offheap.sort.chunk.size.inmb”的值[默认值 = 64 MB] + “carbon.blockletgroup.size.in.mb”的值[默认值 = 64 MB] + 当前的压缩率[64 MB/3.5]) = ~900 MB 每表格 数据查询所需内存: (SPARK_EXECUTOR_INSTAN CES . [默认值 = 2]) x ( carbon.blockletgroup.size.in.mb [默认值 = 64 MB] +“carbon.blockletgroup.size.in.mb”解压内容[默认值 = 64 MB * 3.5]) x (每个执行器核数[默认值 = 1]) = ~ 600 MB
  • 回答 在进行rollup和cube操作时,用户通常是基于维度进行分析,需要的是度量的结果,因此不会对维度进行聚合操作。 例如当前有表src(d1, d2, m),那么语句1“select d1, sum(m) from src group by d1, d2 with rollup”就是对维度d1和d2进行上卷操作计算度量m的结果,因此有实际业务意义,而其结果也跟预期是一致的。但语句2“select d1, sum(d1) from src group by d1, d2 with rollup”则从业务上无法解释。当前对于语句2所有聚合(sum/avg/max/min)结果均为0。 只有在rollup和cube操作中对出现在group by中的字段进行聚合结果才是0,非rollup和cube操作其结果跟预期一致。
  • 问题 使用Spark SQL删除MOR表后重新建表写入数据不能实时同步ro、rt表,报错如下: WARN HiveSyncTool: Got runtime exception when hive syncing, but continuing as ignoreExceptions config is set java.lang.IllegalArgumentException: Failed to get schema for table hudi_table2_ro does not exist at org.apache.hudi.hive.HoodieHiveClient.getTableSchema(HoodieHiveClient.java:183) at org.apache.hudi.hive.HiveSyncTool.syncHoodieTable(HiveSyncTool.java:286) at org.apache.hudi.hive.HiveSyncTool.doSync(HiveSyncTool.java:213)
  • 回答 使用yarn application -kill applicationID命令后Spark只会停掉任务对应的SparkContext,而不是退出当前进程。如果当前进程中存在其他常驻的线程(类似spark-shell需要不断检测命令输入,Spark Streaming不断在从数据源读取数据),SparkContext被停止并不会终止整个进程。 如果需要退出Driver进程,建议使用kill -9 pid命令手动退出当前Driver。
  • 回答 如果LoadIncrementalHFiles工具依赖的Client在集群内安装,且和DataNode在相同的节点上,在工具执行过程中HDFS会创建短路读提高性能。短路读依赖“/var/run/ FusionInsight -HDFS”目录(“dfs.domain.socket.path”),该目录默认权限是750。而当前Linux用户没有权限操作该目录。 上述问题可通过执行以下方法解决: 方法一:创建新用户(推荐使用)。 通过Manager页面创建新的用户,该用户属组中默认包含ficommon组。 [root@xxx-xxx-xxx-xxx ~]# id test uid=20038(test) gid=9998(ficommon) groups=9998(ficommon) 重新执行ImportData。 方法二:修改当前用户的属组。 将该用户添加到ficommon组中。 [root@xxx-xxx-xxx-xxx ~]# usermod -a -G ficommon test [root@xxx-xxx-xxx-xxx ~]# id test uid=2102(test) gid=2102(test) groups=2102(test),9998(ficommon) 重新执行ImportData。
  • 问题 在普通集群中手动创建Linux用户,并使用集群内DataNode节点执行批量导入时,为什么LoadIncrementalHFiles工具执行失败报“Permission denied”的异常? 2020-09-20 14:53:53,808 WARN [main] shortcircuit.DomainSocketFactory: error creating DomainSocket java.net.ConnectException: connect(2) error: Permission denied when trying to connect to '/var/run/FusionInsight-HDFS/dn_socket' at org.apache.hadoop.net.unix.DomainSocket.connect0(Native Method) at org.apache.hadoop.net.unix.DomainSocket.connect(DomainSocket.java:256) at org.apache.hadoop.hdfs.shortcircuit.DomainSocketFactory.createSocket(DomainSocketFactory.java:168) at org.apache.hadoop.hdfs.client.impl.BlockReaderFactory.nextDomainPeer(BlockReaderFactory.java:804) at org.apache.hadoop.hdfs.client.impl.BlockReaderFactory.createShortCircuitReplicaInfo(BlockReaderFactory.java:526) at org.apache.hadoop.hdfs.shortcircuit.ShortCircuitCache.create(ShortCircuitCache.java:785) at org.apache.hadoop.hdfs.shortcircuit.ShortCircuitCache.fetchOrCreate(ShortCircuitCache.java:722) at org.apache.hadoop.hdfs.client.impl.BlockReaderFactory.getBlockReaderLocal(BlockReaderFactory.java:483) at org.apache.hadoop.hdfs.client.impl.BlockReaderFactory.build(BlockReaderFactory.java:360) at org.apache.hadoop.hdfs.DFSInputStream.getBlockReader(DFSInputStream.java:663) at org.apache.hadoop.hdfs.DFSInputStream.blockSeekTo(DFSInputStream.java:594) at org.apache.hadoop.hdfs.DFSInputStream.readWithStrategy(DFSInputStream.java:776) at org.apache.hadoop.hdfs.DFSInputStream.read(DFSInputStream.java:845) at java.io.DataInputStream.readFully(DataInputStream.java:195) at org.apache.hadoop.hbase.io.hfile.FixedFileTrailer.readFromStream(FixedFileTrailer.java:401) at org.apache.hadoop.hbase.io.hfile.HFile.isHFileFormat(HFile.java:651) at org.apache.hadoop.hbase.io.hfile.HFile.isHFileFormat(HFile.java:634) at org.apache.hadoop.hbase.tool.LoadIncrementalHFiles.visitBulkHFiles(LoadIncrementalHFiles.java:1090) at org.apache.hadoop.hbase.tool.LoadIncrementalHFiles.discoverLoadQueue(LoadIncrementalHFiles.java:1006) at org.apache.hadoop.hbase.tool.LoadIncrementalHFiles.prepareHFileQueue(LoadIncrementalHFiles.java:257) at org.apache.hadoop.hbase.tool.LoadIncrementalHFiles.doBulkLoad(LoadIncrementalHFiles.java:364) at org.apache.hadoop.hbase.tool.LoadIncrementalHFiles.run(LoadIncrementalHFiles.java:1263) at org.apache.hadoop.hbase.tool.LoadIncrementalHFiles.run(LoadIncrementalHFiles.java:1276) at org.apache.hadoop.hbase.tool.LoadIncrementalHFiles.run(LoadIncrementalHFiles.java:1311) at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:76) at org.apache.hadoop.hbase.tool.LoadIncrementalHFiles.main(LoadIncrementalHFiles.java:1333)
  • 操作步骤 运行如下命令删除表。 命令: DROP TABLE [IF EXISTS] [db_name.]table_name; 一旦执行该命令,将会从系统中删除表。命令中的“db_name”为可选参数。如果没有指定“db_name”,那么将会删除当前数据库下名为“table_name”的表。 示例: DROP TABLE productdb.productSalesTable; 通过上述命令,删除数据库“productdb”下的表“productSalesTable”。
  • 问题 ZooKeeper客户端刷新TGT失败,无法连接ZooKeeper。报错内容如下: Login: Could not renew TGT due to problem running shell command: '***/kinit -R'; exception was:org.apache.zookeeper.Shell$ExitCodeException: kinit: Ticket expired while renewing credentials
  • 参数描述 表1 参数描述 参数 描述 是否必填 table 需要查询表的表名,支持database.tablename格式 是 clean_policy 清理老版本数据文件的策略,默认KEEP_LATEST_COMMITS 否 retain_commits 仅对KEEP_LATEST_COMMITS策略有效 否 hours_retained 仅对KEEP_LATEST_BY_HOURS策略有效 否 file_version_retained 仅对KEEP_LATEST_FILE_VERSIONS策略有效 否
  • 操作步骤 以客户端安装用户,登录安装Oozie客户端的节点。 执行以下命令,获取安装环境信息。其中“/opt/client”为客户端安装路径,该操作的客户端目录只是举例,请根据实际安装目录修改。 source /opt/client/bigdata_env 判断集群认证模式。 安全模式,执行kinit命令进行用户认证。 例如,使用oozieuser用户进行认证。 kinit oozieuser 普通模式,执行4。 执行以下命令,进入样例目录。 cd /opt/client/Oozie/oozie-client-*/examples/apps/hive/ 该目录下需关注文件如表1所示。 表1 文件说明 文件名称 描述 hive-site.xml Hive任务的配置文件。 job.properties 工作流的参数变量定义文件。 script.q Hive任务的SQL脚本。 workflow.xml 工作流的规则定制文件。 执行以下命令,编辑“job.properties”文件。 vi job.properties 修改如下内容: 更改“userName”的参数值为提交任务的人机用户名,例如“userName=oozieuser”。 执行oozie job命令,运行工作流文件。 oozie job -oozie https://oozie角色的主机名:21003/oozie/ -config job.properties -run 命令参数解释如下: -oozie 实际执行任务的Oozie服务器URL -config 工作流属性文件 -run 运行工作流 执行完工作流文件,显示job id表示提交成功,例如:job: 0000021-140222101051722-oozie-omm-W。登录Oozie管理页面,查看运行情况。 使用oozieuser用户,登录Oozie WebUI页面:https://oozie角色的ip地址:21003/oozie 。 Oozie的WebUI界面中,可在页面表格根据jobid查看已提交的工作流信息。
  • 前提条件 Hive和Oozie组件及客户端已经安装,并且正常运行。 已创建或获取访问Oozie服务的人机用户账号及密码。 该用户需要从属于hadoop、supergroup、hive组,同时添加Oozie的角色操作权限。如果使用Hive多实例,该用户还需要从属于具体的Hive实例组,如hive3。 用户同时还需要至少有manager_viewer权限的角色。 获取运行状态的Oozie服务器(任意实例)URL,如“https://10.1.130.10:21003/oozie”。 获取运行状态的Oozie服务器主机名,如“10-1-130-10”。 获取Yarn ResourceManager主节点IP,如10.1.130.11。
  • 操作场景 该任务指导用户在使用Oozie客户端提交Hive任务 Hive任务有如下类型: Hive作业 使用JDBC方式连接的Hive作业。 Hive2作业 使用Beeline方式连接的Hive作业。 本文以使用Oozie客户端提交Hive作业为例介绍。 使用Oozie客户端提交Hive2作业与提交Hive作业操作步骤一致,只需将操作步骤中对应路径的“/Hive”改成“/Hive2”即可。 例如,Hive作业运行目录“/opt/client/Oozie/oozie-client-*/examples/apps/hive/”,则Hive2对应的运行目录为“/opt/client/Oozie/oozie-client-*/examples/apps/hive2/”。 建议下载使用最新版本的客户端。
  • 回答 这是RM的使用限制,应用程序运行过程中移动到别的队列,此时RM重启,RM并不会在状态存储中存储新队列的信息。 假设用户提交一个MR任务到叶子队列test11上。当任务运行时,删除叶子队列test11,这时提交队列自动变为lost_and_found队列(找不到队列的任务会被放入lost_and_found队列中),任务暂停运行。要启动该任务,用户将任务移动到叶子队列test21上。在将任务移动到叶子队列test21后,任务继续运行,此时RM重启,重启后显示提交队列为lost_and_found队列,而不是test21队列。 发生上述情况的原因是,任务未完成时,RM状态存储中存储的还是应用程序移动前的队列状态。唯一的解决办法就是等RM重启后,再次移动应用程序,将新的队列状态信息写入状态存储中。
  • Data masking函数 数据脱敏(Data masking) 指对某些敏感信息通过脱敏规则进行数据的变形,实现敏感隐私数据的可靠保护。 mask_first_n(string str[, int n]) →varchar 描述:返回str的屏蔽版本,前n个值被屏蔽。大写字母被转为"X",小写字母被转为"x",数字被转为"n"。 select mask_first_n('Aa12-5678-8765-4321', 4); _col0 --------------------- Xxnn-5678-8765-4321 (1 row) mask_last_n(string str[, int n]) →varchar 描述:返回str的屏蔽版本,后n个值被屏蔽。大写字母被转为"X",小写字母被转为"x",数字被转为"n"。 select mask_last_n('1234-5678-8765-Hh21', 4); _col0 --------------------- 1234-5678-8765-Xxnn (1 row) mask_show_first_n(string str[, int n]) →varchar 描述:返回str的屏蔽版本,只显示前n个字符。大写字母被转为"X",小写字母被转为"x",数字被转为"n"。 select mask_show_first_n('1234-5678-8765-4321',4); _col0 --------------------- 1234-nnnn-nnnn-nnnn (1 row) mask_show_flairst_n(string str[, int n]) →varchar 描述:返回str的屏蔽版本,只显示后n个值。大写字母被转为"X",小写字母被转为"x",数字被转为"n"。 select mask_show_last_n('1234-5678-8765-4321',4); _col0 --------------------- nnnn-nnnn-nnnn-4321 (1 row)) mask_hash(string|char|varchar str) →varchar 描述:返回基于str的散列值。散列是一致的,可以用于跨表连接被屏蔽的值。对于非字符串类型,返回NULL。 select mask_hash('panda'); _col0 ------------------------------------------------------------------ a7cdf5d0586b392473dd0cd08c9ba833240006a8a7310bf9bc8bf1aefdfaeadb (1 row) 父主题: HetuEngine SQL函数和操作符说明
  • 示例 创建一个名为web的schema: CREATE SCHEMA web; 在指定路径创建schema,兼容写法示例: CREATE SCHEMA test_schema_5 LOCATION '/user/hive'; 在名为Hive的CATA LOG 下创建一个名为sales的schema: CREATE SCHEMA hive.sales; 如果当前catalogs下名为traffic的schema不存在时,则创建一个名为traffic的schema: CREATE SCHEMA IF NOT EXISTS traffic; 创建一个带属性的schema: CREATE DATABASE createtestwithlocation COMMENT 'Holds all values' LOCATION '/user/hive/warehouse/create_new' WITH dbproperties('name'='akku', 'id' ='9'); --通过describe schema|database 语句来查看刚创建的schema describe schema createtestwithlocation;
  • 概述 所有的正则表达式函数都使用Java样式的语法。但以下情况除外: 使用多行模式(通过(?m)标志启用)时,只有\ n被识别为行终止符。 此外,不支持(?d)标志,因此不能使用。 大小写区分模式(通过(?i)标志启用)时,总是以unicode的模式去实现。同时,不支持上下文敏感匹配和局部敏感匹配。此外,不支持(?u)标志。 不支持Surrogate Pair编码方式。例如,\ uD800 \ uDC00不被视为U + 10000,必须将其指定为\ x {10000}。 边界字符(\b)无法被正确处理,因为它一个不带基字符的非间距标记。 \Q和\E在字符类(如[A-Z123])中不受支持,而是作为文本处理。 支持Unicode字符类(\ p {prop}),但有以下差异: 名称中的所有下划线都必须删除。例如,使用OldItalic而不是Old_Italic 必须直接指定脚本,不能带Is,script =或sc =前缀。示例:\ p {Hiragana} 必须使用In前缀指定块。不支持block =和blk =前缀。示例:\p{Mongolian} 必须直接指定类别,而不能带Is,general_category =或gc =前缀。示例:\p{L} 二进制属性必须直接指定,而不是Is。示例:\p{NoncharacterCodePoint}
  • 示例 -- 创建事务表 create table upd_tb(col1 int,col2 string) with (format='orc',transactional=true); --插入数据 insert into upd_tb values (3,'A'),(4,'B'); --修改col1 = 4的数据 update upd_tb set col1=5 where col1=4; --查询表,col1=4的记录已被修改 select * from upd_tb; -- col1 | col2 ------|------ 5 | B 3 | A
  • Flink用户权限说明 访问并使用Flink WebUI进行业务操作需为用户赋予FlinkServer相关权限,Manager的admin用户没有FlinkServer的业务操作权限。 FlinkServer中应用(租户)是最大管理范围,包含集群连接管理、数据连接管理、应用管理、流表和作业管理等。 FlinkServer中有如表1所示三种资源权限: 表1 FlinkServer资源权限 权限名称 权限描述 备注 FlinkServer管理员权限 具有所有应用的编辑、查看权限。 是FlinkServer的最高权限。如果已经具有FlinkServer管理员权限,则会自动具备所有应用的权限。 应用编辑权限 具有当前应用编辑权限的用户,可以执行创建、编辑和删除集群连接、数据连接,创建流表、创建作业及运行作业等操作。 同时具有当前应用查看权限。 应用查看权限 具有当前应用查看权限的用户,可以查看应用。 - 父主题: Flink用户权限管理
  • Concatenation Operator : || || 操作符用于将相同类型的数组或数值串联起来。 SELECT ARRAY[1] || ARRAY[2]; _col0 -------- [1, 2] (1 row) SELECT ARRAY[1] || 2; _col0 -------- [1, 2] (1 row) SELECT 2 || ARRAY[1]; _col0 -------- [2, 1] (1 row)
  • SYSTEM 此采样方法将表划分为数据的逻辑段,并按此粒度对表进行采样。此采样方法要么从特定数据段中选择所有行,要么跳过它(基于采样百分比与运行时计算的随机值之间的比较)。系统采样中行的选择依赖于使用的connector。例如,如果使用Hive数据源,这将取决于数据在HDFS上的布局。这种采样方法不能保证独立的抽样概率。 SELECT * FROM users TABLESAMPLE SYSTEM (75);
  • BERNOULLI 每一行都将基于指定的采样率选择到采样表中。当使用Bernoulli方法对表进行采样时,将扫描表的所有物理块并跳过某些行(基于采样百分比和运行时计算的随机值之间的比较)。结果中包含一行的概率与任何其他行无关。这不会减少从磁盘读取采样表所需的时间。如果进一步处理采样输出,则可能会影响总查询时间。 SELECT * FROM users TABLESAMPLE BERNOULLI (50);
  • 使用多个列 SELECT numbers, animals, n, a FROM ( VALUES (ARRAY[2, 5], ARRAY['dog', 'cat', 'bird']), (ARRAY[7, 8, 9], ARRAY['cow', 'pig']) ) AS x (numbers, animals) CROSS JOIN UNNEST(numbers, animals) AS t (n, a);
  • 回答 如果应用程序没有设置标签表达式,那么该应用程序上新增的container/resource将使用其所在队列默认的标签表达式。如果队列没有默认的标签表达式,则将其标签表达设置为“default label”。 当应用程序(app1)提交到队列(Q1)上时,应用程序上新增的container/resource使用队列默认的标签表达式(“label1”)。如果app1正在运行时Q1被删除,则app1被移动到“lost_and_found”队列上。由于“lost_and_found”队列没有标签表达式,其标签表达式设置为“default label”,此时app1上新增的container/resource也将其标签表达式设置为“default label”。当app1被移回正常运行的队列(例如,Q2)时,如果Q2支持调用app1中的所有标签表达式(包含“label1”和“default label”),则app1能正常运行直到结束;如果Q2仅支持调用app1中的部分标签表达式(例如,仅支持调用“default label”),那么app1在运行时,拥有“label1”标签表达式的部分任务的资源请求将无法获得资源,从而被挂起,不能正常运行。 因此当把应用程序从“lost_and_found”队列移动到其他运行正常的队列上时,需要保证目标队列能够调用该应用程序的所有标签表达式。 建议不要删除正在运行应用程序的队列。
  • 问题排查步骤 登录ClickHouse客户端,需要排查是否存在异常的Merge。 select database, table, elapsed, progress, merge_type from system.merges; 业务上建议insert频率不要太快,不要小批量数据的插入,适当增大每次插入的时间间隔。 数据表分区分配不合理,导致产生太多的区分,需要重新划分分区。 如果没有触发Merge,或者Merge较慢,需要调整参数加快Merge。 加速Merge,需要调整如下参数,请参考加速Merge操作: 配置项 参考值 max_threads CPU核数*2 background_pool_size CPU核数 merge_max_block_size 8192的整数倍,根据CPU内存资源大小调整 cleanup_delay_period 适当小于默认值 30
  • 字符串函数 这些函数假定输入字符串包含有效的UTF-8编码的Unicode代码点。不会显式检查UTF-8数据是否有效,对于无效的UTF-8数据,函数可能会返回错误的结果。可以使用from_utf8来更正无效的UTF-8数据。 此外,这些函数对Unicode代码点进行运算,而不是对用户可见的字符(或字形群集)进行运算。某些语言将多个代码点组合成单个用户感观字符(这是语言书写系统的基本单位),但是函数会将每个代码点视为单独的单位。 lower和upper函数不执行某些语言所需的区域设置相关、上下文相关或一对多映射。 chr(n) → varchar 描述:返回Unicode编码值为n的字符值。 select chr(100); --d char_length(string) → bigint 参考length(string) character_length(string) → bigint 参考length(string) codepoint(string) → integer 描述:返回单个字符对应的Unicode编码。 select codepoint('d'); --100 concat(string1, string2) → varchar 描述:字符串连接。 select concat('hello','world'); -- helloworld concat_ws(string0, string1, ..., stringN) → varchar 描述:将string1、string2、...,stringN,以string0作为分隔符串联成一个字符串。如果string0为null,则返回值为null。分隔符后的参数如果是NULL值,将会被跳过。 select concat_ws(',','hello','world'); -- hello,world select concat_ws(NULL,'def'); --NULL select concat_ws(',','hello',NULL,'world'); -- hello,world select concat_ws(',','hello','','world'); -- hello,,world concat_ws(string0, array(varchar)) → varchar 描述:将数组中的元素以string0为分隔符进行串联。如果string0为null,则返回值为null。数组中的任何null值都将被跳过。 select concat_ws(NULL,ARRAY['abc']);--NULL select concat_ws(',',ARRAY['abc',NULL,NULL,'xyz']); -- abc,xyz select concat_ws(',',ARRAY['hello','world']); -- hello,world decode(binary bin, string charset) →varchar 描述:根据给定的字符集将第一个参数编码为字符串,支持的字符集包括('UTF-8', 'UTF-16BE', 'UTF-16LE', 'UTF-16'),当第一个参数为null,将返回null。 select decode(X'70 61 6e 64 61','UTF-8'); _col0 ------- panda (1 row) select decode(X'00 70 00 61 00 6e 00 64 00 61','UTF-16BE'); _col0 ------- panda (1 row) encode(string str, string charset) →binary 描述:字符串按照给定的字符集进行编码。 select encode('panda','UTF-8'); _col0 ---------------- 70 61 6e 64 61 (1 row) find_in_set (string str, string strList) →int 描述:返回str在逗号分隔的strList中第一次出现的位置。当有参数为null时,返回值也为null。 select find_in_set('ab', 'abc,b,ab,c,def'); -- 3 format_number(number x, int d) →string 描述:将数字x格式化为'#,###,###.##',保留d位小数,以字符串的形式返回结果。 select format_number(541211.212,2); -- 541,211.21 format(format,args...) → varchar 描述:参见Format。 locate(string substr, string str, int pos]) →int 描述:返回子串在字符串的第pos位后第一次出现的位置。没有满足条件的返回0。 select locate('aaa','bbaaaaa',6);-- 0 select locate('aaa','bbaaaaa',1);-- 3 select locate('aaa','bbaaaaa',4);-- 4 length(string) → bigint 描述:返回字符串的长度。 select length('hello');-- 5 levenshtein_distance(string1, string2) → bigint 描述:计算string1和string2的Levenshtein距离,即将string转为string2所需要的单字符编辑(包括插入、删除或替换)最少次数。 select levenshtein_distance('helo word','hello,world'); -- 3 hamming_distance(string1, string2) → bigint 描述:返回字符串1和字符串2的汉明距离,即对应位置字符不同的数量。 请注意,两个字符串的长度必须相同。 select hamming_distance('abcde','edcba');-- 4 instr(string,substring) → bigint 描述:查找substring 在string中首次出现的位置。 select instr('abcde', 'cd');--3 levenshtein(string1, string2) → bigint 参考levenshtein_distance(string1, string2) levenshtein_distance(string1, string2) → bigint 描述:返回字符串1和字符串2的Levenshtein编辑距离,即将字符串1更改为字符串2所需的最小单字符编辑(插入,删除或替换)次数。 select levenshtein_distance('apple','epplea');-- 2 lower(string) → varchar 描述:将字符转换为小写。 select lower('HELLo!');-- hello! lcase(string A) → varchar 描述:同lower(string)。 ltrim(string) → varchar 描述:去掉字符串开头的空格。 select ltrim(' hello');-- hello lpad(string, size, padstring) → varchar 描述:右填充字符串以使用padstring调整字符大小。如果size小于字符串的长度,则结果将被截断为size个字符。大小不能为负,并且填充字符串必须为非空。 select lpad('myk',5,'dog'); -- domyk
  • 二级索引表规格 表3 二级索引表规格 实体 测试值 二级索引表数量 10 二级索引表中的组合列的列数 5 二级索引表中的列名长度(单位:字符) 120 二级索引表名长度(单位:字符) 120 表中所有二级索引表的表名+列名的累积长度*(单位:字符) 3800** * Hive允许的上限值或可用资源的上限值。 ** 二级索引表使用hive注册,并以json格式的值存储在HiveSERDEPROPERTIES中。由hive支持的SERDEPROPERTIES的最大字符数为4000个字符,无法更改。
  • CarbonData主要规格 表2 CarbonData主要规格 实体 测试值 测试环境 表数 10000 3个节点,每个executor 4个CPU核,20GB。Driver内存5GB,3个Executor。 总列数:107 String:75 Int:13 BigInt:7 Timestamp:6 Double:6 表的列数 2000 3个节点,每个executor4个CPU核,20GB。Driver内存5GB,3个Executor。 原始 CS V文件大小的最大值 200GB 17个cluster节点,每个executor 150GB,25个CPU核。Driver内存10 GB,17个Executor。 每个文件夹的CSV文件数 100个文件夹,每个文件夹10个文件,每个文件大小50MB。 3个节点,每个executor4个CPU核,20GB。Driver内存5GB,3个Executor。 加载文件夹数 10000 3个节点,每个executor4个CPU核,20GB。Driver内存5GB,3个Executor。
  • 回答 JD BCS erver方式使用了ShuffleService功能,Reduce阶段所有的Executor会从NodeManager中获取数据,当数据量达到一个级别(10T级别),会出现NodeManager单点瓶颈(ShuffleService服务在NodeManager进程中),就会出现某些Task获取数据超时,从而出现该问题。 因此,当数据量达到10T级别以上的Spark任务,建议用户关闭ShuffleService功能,即在“Spark-defaults.conf”配置文件中将配置项“spark.shuffle.service.enabled”配置为“false”。
共100000条