clickhouse官方文档_Spark JDBC写ClickHouse的一些坑

本文介绍了使用Spark JDBC将数据从Hive批量导入ClickHouse的过程中遇到的坑,包括ClickHouse的JDBC驱动选择、表结构自动化维护、并发写入问题、数据类型兼容性以及中文乱码等,并提供了相应的解决方案。
摘要由CSDN通过智能技术生成

前言

最近由于未来工作内容的需要,利用闲碎时间对ClickHouse进行了调研和学习。ClickHouse是由封面贝加尔湖所在的“战斗民族”的Yandex公司所开源的可使用SQL进行实时查询分析的OLAP列式存储数据库。未来可能会用其替代目前使用比较重的Hbase数据库,用于用户画像标签存储,个性化推荐等场景。

今天与大家分享的比较偏实战一些,因为这几天在调研这块内容时遇到了不少坑,觉得还是很有必要分享出来。至于ClickHouse的相关理论部分,会在之后再与大家交流探讨。

ClickHouse的JDBC驱动

目前通过JDBC写ClickHouse一共有三种驱动,除了官方的,还有两种第三方驱动。分别如下:

  1. 官方的JDBC Driver:8123端口

    基于HTTP实现,整体性能不太出色,大量数据写入时有可能出现超时的现象

  2. housepower的ClickHouse-Native-JDBC:9000端口

    基于TCP协议实现,支持高性能写入,数据按列组织并有压缩

  3. Clickhouse4j

    基于HTTP,但是相比官方进行了大量优化,更加轻量级和快速

所以,在工作中遇到需要将Hive中的数据批量导入到ClickHouse时,可利用Spark JDBC进行操作,而笔者就是基于第2种驱动,也是在这过程中遇到了一些问题。

Spark JDBC导入数据

  1. spark代码端,加入jdbc驱动依赖

<dependency>   <groupId>com.github.housepowergroupId>   <artifactId>clickhouse-native-jdbcartifactId>   <version>2.1-stableversion>dependency>

    使用Spark SQL读取Hive中某张表的数据构建DataFrame

   val df = spark.sql(     s"""        |SELECT member_id,        |  cell_phone ,        |  card,        |  age,        |  age_range,        |  sex,        |  birthday        |FROM persona.flat_table      """.stripMargin)

    2. 在ClickHouse预定义表结构,创建表

    因为Spark Jdbc的方式并不能够像写Hive一样,支持在写入ClickHouse的时候自动创建表结构,所以就必须要提前创建表。但是实际上在很多场景下,表的数据维度即字段经常新增或删减,例如存储用户

  • 8
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spark 官方文档是学习 Spark 的重要参考资料之一,可以帮助你快速入门。以下是 Spark 官方文档中的 Spark 快速入门部分的内容: 1. 安装 Spark 首先,你需要在机器上安装 SparkSpark 支持多种安装方式,包括使用包管理器进行安装,从 Spark 官网下载二进制包等。在安装完成后,你需要设置环境变量,以便能够在命令行中使用 Spark。 2. 运行 Spark Shell Spark Shell 是 Spark 提供的一个交互式 Shell,可以通过命令行与 Spark 进行交互。你可以使用以下命令启动 Spark Shell: ``` ./bin/spark-shell ``` 3. Spark 上的第一个应用程序 在 Spark Shell 中,你可以编 Spark 应用程序,并直接在 Shell 中运行。下面是一个简单的 Spark 应用程序,它读取一个文本文件并计算每个单词出现的次数: ``` val textFile = sc.textFile("hdfs://...") val counts = textFile.flatMap(line => line.split(" ")) .map(word => (word, 1)) .reduceByKey(_ + _) counts.saveAsTextFile("hdfs://...") ``` 在这个应用程序中,我们使用了 Spark 的核心概念,包括 RDD、flatMap、map 和 reduceByKey。通过运行这个应用程序,你可以学习到 Spark 的基本操作方式。 4. Spark 应用程序的打包和部署 当你编了一个 Spark 应用程序后,你需要将其打包成 JAR 文件,并在集群中运行。你可以使用 Maven、SBT 或其他构建工具来打包 Spark 应用程序。一旦打包完成,你可以使用以下命令在集群中运行应用程序: ``` ./bin/spark-submit --class com.example.MyApp --master spark://host:port myApp.jar ``` 以上就是 Spark 官方文档中的 Spark 快速入门部分的内容。希望能够对你学习 Spark 有所帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值