spark读写clickhouse

官网文档:https://clickhouse.tech/docs/zh/

spark读取clickhouse数据

一:这种jdbc的连接加载的是全量表数据


val prop = new java.util.Properties
prop.setProperty("user", "default")
prop.setProperty("password", "123456")
prop.setProperty("driver", "ru.yandex.clickhouse.ClickHouseDriver")

val readDataDf = sparkSession
  .read
  .jdbc("jdbc:clickhouse://hadoop102:8123",
    "table_op",
    prop)
  .where("LocationTime>='2021-09-21 09:00:00' AND LocationTime<='2021-09-21 18:00:00'")

二:这种是添加过滤条件加载部分数据(推荐这种,因为如果你的表很大的话spark任务driver启不来)
//将过滤查询提前存到临时表

val tablename = s"(select * from table_op where LocationTime between '$start_time' and '$end_time') temp"

val readDataDf = session.read
  .format("jdbc")
  .option("url", "jdbc:clickhouse://hadoop05:8123")
  .option("fetchsize", "500000")
  .option("driver", "ru.yandex.clickhouse.ClickHouseDriver")
  .option("user", "default")
  .option("password", "123456")
  .option("dbtable", tablename)
  .load()

spark写入clickhouse

val prop = new java.util.Properties
prop.setProperty("user", CommonConfig.CLICK_USER)
prop.setProperty("password", CommonConfig.CLICK_PASSWORD)
prop.setProperty("driver", CommonConfig.CLICK_DRIVER)

resultDataDf
  .write
  .mode(SaveMode.Append)
  .option("batchsize", "500000")
  .option("isolationLevel", "NONE")
  .option("numPartitions", "1")
  .jdbc("jdbc:clickhouse://hadoop102:8123",    //CommonConfig.CLICK_URL
    "table_op_2020", prop)

clickhouse建表

启动clickhouse客户端

clickhouse-client --port 9020 -h hadoop05 -d default -m -u default --password 123456

建表(本地表,分布式表)

一次性在集群每个机器上建立本地表(因为加了on cluster,所以只需在任意一台机器上执行一次建表,集群中每台都会生成本地表;如果不加on cluster,则需要去每台机器都执行一遍建表语句生成本地表)
CREATE TABLE `table_2021` ON CLUSTER fangteCluster (
        `Id` String,
        `Udid` String,
        `LocationTime` String,
        `Gcode` String,
        `IP` String,
        `IMEI` String,
        `IDFA` String,
        `UserId` String,
        `Year` UInt16,
        `Month` UInt8,
        `Day` UInt8
)ENGINE = MergeTree()
PARTITION BY (Year,Month,Day)
ORDER BY (Gcode,Udid) 
SETTINGS index_granularity=8192, enable_mixed_granularity_parts=1;

默认情况下主键跟排序键(由 ORDER BY 子句指定)相同。
因此,大部分情况下不需要再专门指定一个 PRIMARY KEY 子句	
enable_mixed_granularity_parts=1 启用以字节为单位的索引粒度,有助于提升大表的查询性能

一次性在集群所有机器上建立分布式表
CREATE TABLE table_op_2021 ON CLUSTER mycluster AS table_2021 ENGINE = Distributed(mycluster, default, table_2021, rand());
只在一台机器上建分布式表
CREATE TABLE table_op_2021 AS table_2021 ENGINE = Distributed(mycluster, default, table_2021, rand());

  • 8
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
数据分析职业是一个多金的职业,数据分析职位是一个金饭碗的职位,前景美好,但是要全面掌握大数据分析技术,非常困难,大部分学员的痛点是不能快速找到入门要点,精准快速上手。本课程采用项目驱动的方式,以Spark3和Clickhouse技术为突破口,带领学员快速入门Spark3+Clickhouse数据分析,促使学员成为一名高效且优秀的大数据分析人才。学员通过本课程的学习,不仅可以掌握使用Python3进行Spark3数据分析,还会掌握利用Scala/java进行Spark数据分析,多语言并进,力求全面掌握;另外通过项目驱动,掌握Spark框架的精髓,教导Spark源码查看的技巧;会学到Spark性能优化的核心要点,成为企业急缺的数据分析人才;更会通过ClickhouseSpark搭建OLAP引擎,使学员对大数据生态圈有一个更加全面的认识和能力的综合提升。真实的数据分析项目,学完即可拿来作为自己的项目经验,增加面试谈薪筹码。课程涉及内容:Ø  Spark内核原理(RDD、DataFrame、Dataset、Structed Stream、SparkML、SparkSQL)Ø  Spark离线数据分析(千万简历数据分析、雪花模型离线数仓构建)Ø  Spark特征处理及模型预测Ø  Spark实时数据分析(Structed Stream)原理及实战Ø  Spark+Hive构建离线数据仓库(数仓概念ODS/DWD/DWS/ADS)Ø  Clickhouse核心原理及实战Ø  Clickhouse engine详解Ø  SparkClickhouse导入简历数据,进行数据聚合分析Ø  catboost训练房价预测机器学习模型Ø  基于Clickhouse构建机器学习模型利用SQL进行房价预测Ø  Clickhouse集群监控,Nginx反向代理Grafana+Prometheus+Clickhouse+node_exporterØ  Spark性能优化Ø  Spark工程师面试宝典       课程组件:集群监控:福利:本课程凡是消费满359的学员,一律送出价值109元的实体书籍.

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大数据翻身

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值