这是来添乱的~
你的问题和他的描述没半毛钱关系(可以忽略)
我对这方面理解的也不是很透,我找了个3亿表测试了一下,说一下我的观点和我的结果:
1.tispark从设计之初,考虑的是数据都拉到spark内存中进行计算,所以我实际操作中都是给予足够载入全表的内存,这种机制也符合spark的常规做法。
2.limit实际上并没有下推到tikv,数据还是拉倒内存中取limit,此时表过大,内存过小,oom必然发生,limit要说优化也能优化,看官方的权衡吧。
我找了个3亿的表测试了一下,加不加limit,内存不够的情况下,都会oom,没有测试出来,加limit会oom,不加就能show出来这个场景,因为我看了一下spark的执行过程,都是全表加载的,我找个百万级别的表,给予足够内存后,加不加也都能出来。
另外,我在跑spark 3+tispark 2.5+tidb 5的时候,我一般都是配置如下四个配置:
少一个都报错,我看你只截图了两个参数,应该是没截全吧。
我看你在git上提了个issue,可以看看官方的回复。
不好意思,我们在讨论tispark的limit问题,不是原生tidb的,不知道是不是我漏了什么信息。
catalog的配置加不加不影响的,tidb catalog测试过,功能不完善且和TiExtensions基本重合,我们就没用。
问题比较复杂,看来要上交流会了… 如果有结果的话,再来更新了…
你的表数据量多大,字段多少,能不能给个脱敏的数据结构,因为以前有过字段类型的问题导致TiException触发导致的oom问题,我们收集一下信息,找大佬看看能不能复现。
CREATE TABLE `perio_artical` (
`random_id` varchar(255) DEFAULT NULL,
`article_id` varchar(255) NOT NULL,
`perio_id` varchar(255) DEFAULT NULL,
`issue_id` varchar(255) DEFAULT NULL,
`perio_title` varchar(255) DEFAULT NULL,
`trans_title` text DEFAULT NULL,
`doi` varchar(255) DEFAULT NULL,
`article_seq` int(11) DEFAULT NULL,
`article_title` text DEFAULT NULL,
`en_title` longtext DEFAULT NULL,
`authors_name` longtext DEFAULT NULL,
`trans_authors` longtext DEFAULT NULL,
`authors_unit` longtext DEFAULT NULL,
`column_name` varchar(255) DEFAULT NULL,
`trans_column` text DEFAULT NULL,
`publish_year` varchar(255) DEFAULT NULL,
`volume` varchar(255) DEFAULT NULL,
`issue_num` varchar(255) DEFAULT NULL,
`abstract` longtext DEFAULT NULL,
`orig_abstract` longtext DEFAULT NULL,
`trans_abstract` longtext DEFAULT NULL,
`text_segment` longtext DEFAULT NULL,
`language` varchar(255) DEFAULT NULL,
`trans_language` varchar(255) DEFAULT NULL,
`keywords` varchar(255) DEFAULT NULL,
`orig_keys` text DEFAULT NULL,
`trans_keys` longtext DEFAULT NULL,
`auto_keys` longtext DEFAULT NULL,
`head_words` longtext DEFAULT NULL,
`head_table` longtext DEFAULT NULL,
`class_code` varchar(255) DEFAULT NULL,
`orig_classcode` text DEFAULT NULL,
`orig_class` longtext DEFAULT NULL,
`auto_classcode` text DEFAULT NULL,
`page_range` varchar(255) DEFAULT NULL,
`page_cnt` int(11) DEFAULT NULL,
`doc_num` varchar(255) DEFAULT NULL,
`literature_code` varchar(255) DEFAULT NULL,
`received_date` datetime DEFAULT NULL,
`revised_date` datetime DEFAULT NULL,
`orig_pub_date` datetime DEFAULT NULL,
`pro_pub_date` datetime DEFAULT NULL,
`abst_webdate` datetime DEFAULT NULL,
`full_pubdate` datetime DEFAULT NULL,
`abstract_url` varchar(255) DEFAULT NULL,
`full_url` varchar(255) DEFAULT NULL,
`is_fulltext` varchar(255) DEFAULT NULL,
`is_oa` varchar(255) DEFAULT NULL,
`service_model` varchar(255) DEFAULT NULL,
`cn` varchar(255) DEFAULT NULL,
`issn` varchar(255) DEFAULT NULL,
`hxkbj_istic` varchar(255) DEFAULT NULL,
`hxkbj_pku` varchar(255) DEFAULT NULL,
`hxkbj_nd` varchar(255) DEFAULT NULL,
`hxkbj_ei` varchar(255) DEFAULT NULL,
`hxkbj_sci` varchar(255) DEFAULT NULL,
`refdoc_cnt` int(11) DEFAULT NULL,
`linkdoc_cnt` int(11) DEFAULT NULL,
`cited_cnt` int(11) DEFAULT NULL,
`Fund_info` longtext DEFAULT NULL,
`core_perio` varchar(255) DEFAULT NULL,
`is_nstl` int(11) DEFAULT NULL,
`first_publish` int(11) DEFAULT NULL,
`source_db` varchar(255) DEFAULT NULL,
`first_authors` text DEFAULT NULL,
`batch_id` int(11) DEFAULT NULL,
`classname_1` longtext DEFAULT NULL,
`classname_2` longtext DEFAULT NULL,
`classname_3` longtext DEFAULT NULL,
`down_count` int(11) DEFAULT NULL,
`view_count` int(11) DEFAULT NULL,
`org_name` longtext DEFAULT NULL,
`new_org` longtext DEFAULT NULL,
`auth_area` text DEFAULT NULL,
`auth_city` text DEFAULT NULL,
`auth_county` text DEFAULT NULL,
`education_code` text DEFAULT NULL,
`primary_partition` int(4) GENERATED ALWAYS AS ((crc32(`article_id`)) % 9999) STORED NOT NULL,
`last_modify_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`projectID` longtext DEFAULT NULL,
`FundGroupNameZh` text DEFAULT NULL,
`ProjectGrantNo` text DEFAULT NULL,
`IsThirdService` int(11) DEFAULT NULL,
`spark_update_time` datetime DEFAULT NULL,
UNIQUE KEY `article_id` (`article_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
数据量:99331717
打个岔,麻烦问一下,功能不完善指的是哪些方面?
看了一下,git上的交流,目前 **shiyuhang0**回复https://github.com/pingcap/tispark/pull/2329可以修复这个bug。
简单解释一下,shiyuhang0大佬推测是个limit下推的问题,针对limiit+show的场景没有实现limit的下推。
是的,这情况看起来就是没有下推
你们如何使用的catalog
经测试,该bug在tispark 2.5.1已经解决
果然是个bug
此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。