首页 > 其他分享 >ClickHouse使用之四 ——外部数据源导入通用方案之insert into select from

ClickHouse使用之四 ——外部数据源导入通用方案之insert into select from

时间:2023-09-12 11:33:31浏览次数:47  
标签:insert 外部 数据源 into hive 导入 引擎 clickhouse

需求:

1、在工作中,我们常常需要将外部 hive 或者 mysql、oracle 等数据源导入到clickhouse中,对于多种外部数据源,是否有通用的数据导入方案?

2、我们在clickhouse上维持一张查询主表,但外部数据源表是hive增量表,新增数据需要同步更新到clickhouse上,是否有不通过第三方组件的插入方式?

解决:
1、外部数据源有可能是多种

那么这里不纠结某个外部数据源的导入速度,我这里提供一种通用方式,可以先在clickhouse中
创建一张外部引擎表,详细官网都有格式介绍:https://clickhouse.com/docs/zh/engines/table-engines/integrations/hdfs/

由于clickhouse支持insert into xxx select * from xxx 语句进行写入

故我们可以将外部引擎表通过此函数导入进需要经常查询的MergeTree引擎表中

那么有人可能会说:既然外部引擎表可以供我们查询,我们为何要重新写入到MergeTree引擎表?

这是因为clickhouse在OLAP查询分析中的核心引擎就是MergeTree,而外部表只是嫁接表,无法使用clickhouse的核心能力,故需要有一层导入过程,这里可以将外部引擎表想象成中间层,最终供外部查询的数据都应该在MergeTree表中,如下图:

 

2、在hive增量表层面上,新增数据大部分会存储到一张临时表然后合并到hive主表,亦或者以文件的方式存储再转入至hive目录下,针对这种新增数据很明确的情况,我们常常使用的方式是通过clickhouse创建一张临时外部表指向hive临时表,然后通过 insert into xxx select * from xxx 语句写入进主表即可。

 

引用自:https://zhuanlan.zhihu.com/p/475498485

标签:insert,外部,数据源,into,hive,导入,引擎,clickhouse
From: https://www.cnblogs.com/zhanchenjin/p/17695745.html

相关文章

  • ORA-00600 kauupd:2 merge into
    alert日志显示如下:ORA-00600:internalerrorcode,arguments:[kauupd:2],[],[],[],[],[],[],[],[],[],[],[]执行的sql类似如下:mergeintotab1ausing(selectcodefromcus1wherecode>1)bon(a.code=b.code)whenmatchedthenupdateseta.total=a.to......
  • 最简单的前端分页---思路就是监听分页变化,然后slice数据源
    element版本的背景有些页面显示数据量不大,或者后端分页比较复杂;不考虑性能情况下前端分页不失为比较好的选择。实现技术点:VUE+Element(el-table,el-pagination)DEMO<template><divclass="app-container"><divclass="content"><el-tablev-loa......
  • 配置多数据源
    title:配置多数据源date:2021-03-03categories:Springtags:DataSourse启动类@SpringBootApplication(exclude={DataSourceAutoConfiguration.class,DataSourceTransactionManagerAutoConfiguration.class,JdbcTemplateAutoConfiguration.class})......
  • 封装的思考(快捷键Alt+insert很重要,千万记住,它还能构造函数)
      这边就是封装的意义,然后操作方式和C++没差多少 然后这里是java封装的语法,看看和C++的区别 接着就是一些快捷键的使用  ......
  • mysql insert into on duplicate key update
    新增如果遇到主键冲突,则更新新建一张表,除了主键id,还有唯一健mobilecreatetableexample_user(idint(4)notnullauto_increment,namevarchar(20),mobilevarchar(20),addressvarchar(100),view_countint(4),primarykey(id),uniqu......
  • 数据源——行业研究报告
    烽火研报:覆盖宏观策略、行业分析、公司研究、财报、招股书、定制报告等内容,为金融从业人员、投资者、市场运营等提供信息获取和整合的专业服务萝卜投研:https://robo.datayes.com看数据、下载研报、上市公司PE/PB研究等。镝数聚:www.dydata.io全行业数据&报告查找下载平台,覆盖......
  • 【刷题笔记】35. Search Insert Position
    题目Givenasortedarrayandatargetvalue,returntheindexifthetargetisfound.Ifnot,returntheindexwhereitwouldbeifitwereinsertedinorder.Youmayassumenoduplicatesinthearray.Example1:Input:[1,3,5,6],5Output:2Example2:I......
  • replace into
    MySQLreplaceinto用法(insertinto的增强版)在向表中插入数据的时候,经常遇到这样的情况:1.首先判断数据是否存在;2.如果不存在,则插入;3.如果存在,则更新。在SQLServer中可以这样处理:ifnotexists(select1fromtwhereid=1)insertintot(id,update_time)valu......
  • spring/springboot 整合注解切换数据源
    springboot整合注解切换数据源1、SpringBoot的配置文件#数据源1spring.datasource.druid.one.url=jdbc:mysql://localhost:3306/db1spring.datasource.druid.one.username=rootspring.datasource.druid.one.password=123456#数据源2spring.datasource.druid.two.url=j......
  • MySQL 使用Navicat delete/insert into/update 大量数据表锁死,kill的线程后线程处于ki
      MySQL使用delete/insertinto/update大量数据表锁死,kill的线程后线程处于killed状态问题解决实际生产环境问题描述:使用Navicat备份BigData数据表时不小心点到了取消按钮,导致数据表被锁。  查看MySQL线程队列,找到刚刚执行的SQL看是属于什么状态。showprocessli......