我使用的应用程序应该是从特定源读取数据(Json),对其执行所需的业务转换,然后将其实时加载到MySQL数据库(所有这些时间的持续时间应以毫秒为单位)。
到目前为止,我已经能够使用带有火花运行器和Java的Apache来完成这个任务,但是与预期相比,这需要更多的时间(大约是)。25秒,记录近200万次)。我对Apache非常陌生,我想知道我是否可以做些什么来提高应用程序的性能,还是应该移到其他一些技术栈来帮助我实现这一点。
发布于 2021-06-12 17:11:43
当速度是主要标准时,您需要理解中间包生成的SQL。
这些层(beam/beam/java/etc)非常方便,可以使逻辑变得更简单。但您不一定相信它们能够生成最优的SQL。
计划A:为评论提供生成的SQL。
计划B: Jetisson的层和直接使用SQL。(当然,会有一个简单的API,可以清楚地暴露生成的SQL将是什么。)
作为SQL的一般规则,最好在一个查询中对数十万行进行操作。使用循环来发出数百或数千行SQL语句的速度可能是原来的10倍。
这可能包括将所有未经修改的数据加载到一个表中,然后在SQL中执行ETL操作--一次在一个“列”上操作,而不是每次在一个“行”上操作。向我们展示一个与SHOW CREATE TABLE一起的JSON字符串,并解释您的ETL的"T“(转换)。
https://stackoverflow.com/questions/67946503
复制相似问题