数据湖管理FAQ
本文汇总了数据湖管理相关的常见问题及解决方案。
Lakehouse相关问题
元数据发现相关问题
多库合并/一键建仓相关问题
Lakehouse相关问题
什么是Lakehouse?
“Lakehouse”是基于数据湖的数仓,一种新的大数据范式,最根本出发点就是为了解决单纯Data Lake应用下的各种问题,例如不支持UPSERT,不支持多版本,不支持增量ETL,小文件太多,格式不是分析型的,元信息不统一,Schema没有约束,缺乏合理的数据索引等等。
围绕OSS对象存储等数据湖存储,构建上层可扩展的数据入湖能力,把Hudi、Delta等高效的对象管理格式和Parquet、ORC等对象格式,写入到数据湖中,并在写入过程中支持UPSERT、小文件合并、MVCC多版本、快照读等能力,用数仓的特性来解决单纯Data Lake下所不能提供的能力;在写入过程中维护海量的库表元信息,给上层的SQL和分析引擎提供统一的数据访问视图。
Lakehouse数据入湖时,对线上RDS有压力吗?如何控制建仓的限流能力?
如果是实时入湖的话,数据来自DTS,使用的是Binlog,对线上RDS无压力;
如果是建仓入湖的话会有一些压力,通过参数来控制。
详情请参见高级选项功能。
Lakehouse工作负载为什么运行失败,没有Spark Log日志可以看?
点击查看workload“详情”弹框,如果job status显示:“specified driver resource spec:[xlarge]+executor resource spec:[xlarge] * executor instances:[2] exceed the max CPU:[16.0] or max Memory:[64.0], errorCode=InvalidParameter ” 类似信息时,表示您在创建workload时,设置的Spark CU使用数超过了对应Virtual Cluster的Max使用限制。
解决方案有:
调整Virtual Cluster的Max CU限制。
调整workload使用的Spark CU个数, 确保任务使用的CU数小于Virtual Cluster的Max CU限制。
元数据发现相关问题
为什么配置了元数据发现,并在“手动执行”之后,发现任务执行时间点之后的新的数据看不到了?
原因:“手动执行”在手动触发执行完一次时,只能发现执行当时已存在的数据,不会发现手动执行后又新增的数据。
解决方案:您需要修改成“定时执行”模式,新增的数据才能被感知增加进来。
OSS数据源配置数仓模式和自由模式的差异以及适用场景是什么?
OSS数据源配置 | 使用场景 | OSS路径格式要求 | 识别精度 | 性能 |
数仓模式 | 用户直接上传数据到OSS,并期望构建可分析与计算的标准数据仓库。 | “库/表/文件”或者“库/表/分区/.../分区/文件” | 高 | 高 |
自由模式 | 已存在OSS数据,但OSS的路径不清晰。期望通过元信息发现,构建可分析的库表分区。 | 无要求 | 一般 | 一般 |
为什么Excel导出的CSV文件没有被识别建表?
目前元数据发现支持的是CSV文本格式,因此需要确认Excel文件导出的是CSV文本文件。
识别一个CSV文件的Schema是通过采样文件,然后读取文件前1000行,需要确认前1000行的字段及分隔是否完全一致。
为什么一个目录下面是同样Schema的JSON文件,但是没有建表?
目前元数据发现只支持对只包含文件的目录进行识别,如果一个目录下既有文件又有目录,会被过滤掉。
使用SLS元数据发现的批量模式,为什么有的Logstore生成了表,有的没有?
您需要确认没有生成表的Logstore是否配置了投递到OSS。
为什么SLS元数据发现报错:Make sure the bucket you specified be in the same region with DLA?
原因:SLS是运行投递到跨region的OSS bucket上,而目前DLA 发现是不能跨region访问的。所以在SLS发现任务运行时,可能会报如下错误“OSS object [oss://test-bucket/] is invalid. Make sure the bucket you specified be in the same region with DLA. Detailed message: The bucket you are attempting to access must be addressed using the specified endpoint. Please send all future requests to this endpoint.”
解决方案:在SLS投递数据所在的OSS region上,使用“OSS元数据发现”来替代“SLS元数据发现”任务,进而实现自动建表时查询SLS所投递的数据。
OSS存储CSV格式文件时,为什么OSS元数据发现不出任何表?
这种情况一般原因有:
某个字段值超过了4096字节长度,导致采样中断。
相同目录下多个文件采样推断出不同的Schema,导致无法确定以这个目录下的哪个Schema为准 。
文件格式不是CSV格式。
OSS存储CSV格式文件时,为什么OSS元数据发现的字段类型不对?
这种情况一般原因有:
这个字段存在空值,采样推断会向上设置为string类型 。
CSV文件数据某个字段有不同的类型值。
CSV的分隔符格式不对,导致识别的都是string。
OSS元数据发现,是否支持CSV文件第一行是说明,第二行是文件头,第三行才是数据?
不支持这种类型。
目前OSS元数据发现支持的CSV格式为:
无文件头,只有数据行的情况。
有第一行作为文件头的情况。
其他非标准CSV情况都不支持。
多库合并/一键建仓相关问题
如何处理一键建仓连接数据库报错:Access denied for user?
原因:一般是由于修改了用户名或密码。
解决方案:请确认是否修改了连接数据库的用户名和密码。如果修改了用户名或者密码,可以点击Schema管理,找到您的一键建仓任务,点击详细信息>配置>更新,修改一键建仓任务的配置。
如何处理一键建仓连接数据库报错:because Could not create connection to database server. Attempted reconnect 3 times. Giving up?
原因:RDS源库压力过大。
解决方案:您可以采取如下措施。
如何处理一键建仓连接数据库报错:because Encountered too many errors talking to a worker node. The node may have crashed or be under too much load. This is probably a transient issue, so please retry your query in a few minutes?
原因:此时DLA公共版整体负载过高。
解决方案:您可以再次点击“执行”来重试建仓任务。若还未成功,请联系 “DLA答疑”。
为什么多库合并、一键建仓报错:No such instance with ID: rm-xxxxxx?
该报错信息表示当前建仓任务涉及的数据源端RDS实例rm-xxxxxx已经释放了。
如何处理一键建仓任务报错:because Communications link failure?
详细如报错The last packet successfully received from the server was 900,120 milliseconds ago. The last packet sent successfully to the server was 900,120 milliseconds ago.), 23 out of 110 jobs are finished。
这种情况一般有如下两种原因。
用户数据库有视图。
RDS源库压力过大,RDS/MySQL 重启中断或者无响应。
解决方案:排除视图,降低并发数。
哪些区支持数据湖构建服务?
中国内地的地域都支持,中国内地以外的地域支持列表如下。
地域 | 数据湖构建服务 |
中国,香港 | 正常 |
日本,东京 | 正常 |
新加坡 | 正常 |
美国,硅谷 | 正常 |
美国,弗吉尼亚 | 正常 |
英国,伦敦 | 正常 |
德国,法兰克福 | 正常 |
马来西亚,吉隆坡 | 正常 |
为什么一键建仓任务成功了,有的表没有同步过来?
您可以在任务运行状态处查看跳过了多少张表,且在运行详情的extraWarnTips信息中查看跳过了哪些表。例如一键建仓会跳过表名、字段名为中文的表。
如果您发现表名和字段名都不是中文可以检查所填写的JDBC账户是否具有该表的访问权限。
如何处理一键建仓任务失败,报错:mppErrorCode=30101, because Direct buffer memory...?
原因:Presto公共集群负载过高。
解决方案:您可以手动再次执行重试建仓任务,如果还失败,请联系 “DLA答疑”。
如何处理一键建仓任务失败,报错关键字:because Failed to rename <OSS Path>?
原因:建仓时,所设置的OSS路径位置是一个OSS归档型的Bucket,导致DLA无法正常重命名这个目录。
解决方案:您可以重建一个建仓任务,设置一个非归档类型的OSS bucket目录位置。
如何处理一键建仓MongoDB失败,报错:Cannot allocate slice larger than XXXXX bytes?
详细报错如下。
because Error reading from mongodb: Cannot allocate slice larger than 2147483639 bytes。
原因:Presto拉取MongoDB数据时,有的字段数值特别大。
解决方案:您可以修改建仓高级配置,通过sensitive-columns配置过滤掉大字段的同步。详情请参见文档高级选项功能。
为什么一键建仓运行了十几个小时然后失败了?
这种情况一般有如下两种原因。
您的库表中表的数量过多,有几千个表,可能会导致同步超时。
同步超时的表没有索引字段或者整型UNIQUE KEY字段,导致Presto计算Split任务运行超时。
解决方案:您可以调整建仓高级配置,设置并发数为connections-per-job=1。详情请参见文档高级选项功能。