大数据ClickHouse(十八):Spark 写入 ClickHouse API
2023-06-13 09:11:54 时间
Spark 写入 ClickHouse API
SparkCore写入ClickHouse,可以直接采用写入方式。下面案例是使用SparkSQL将结果存入ClickHouse对应的表中。在ClickHouse中需要预先创建好对应的结果表。
一、导入依赖
<!-- 连接ClickHouse需要驱动包-->
<dependency>
<groupId>ru.yandex.clickhouse</groupId>
<artifactId>clickhouse-jdbc</artifactId>
<version>0.2.4</version>
<!-- 去除与Spark 冲突的包 -->
<exclusions>
<exclusion>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
</exclusion>
<exclusion>
<groupId>net.jpountz.lz4</groupId>
<artifactId>lz4</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- Spark-core -->
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.11</artifactId>
<version>2.3.1</version>
</dependency>
<!-- SparkSQL -->
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-sql_2.11</artifactId>
<version>2.3.1</version>
</dependency>
<!-- SparkSQL ON Hive-->
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-hive_2.11</artifactId>
<version>2.3.1</version>
</dependency>
二、代码编写
val session: SparkSession = SparkSession.builder().master("local").appName("test").getOrCreate()
val jsonList = List[String](
"{\"id\":1,\"name\":\"张三\",\"age\":18}",
"{\"id\":2,\"name\":\"李四\",\"age\":19}",
"{\"id\":3,\"name\":\"王五\",\"age\":20}"
)
//将jsonList数据转换成DataSet
import session.implicits._
val ds: Dataset[String] = jsonList.toDS()
val df: DataFrame = session.read.json(ds)
df.show()
//将结果写往ClickHouse
val url = "jdbc:clickhouse://node1:8123/default"
val table = "test"
val properties = new Properties()
properties.put("driver", "ru.yandex.clickhouse.ClickHouseDriver")
properties.put("user", "default")
properties.put("password", "")
properties.put("socket_timeout", "300000")
df.write.mode(SaveMode.Append).option(JDBCOptions.JDBC_BATCH_INSERT_SIZE, 100000).jdbc(url, table, properties)
相关文章
- 【视频】Copula算法原理和R语言股市收益率相依性可视化分析|附代码数据
- 新起点!大数据分布式可视化的 DAG 任务调度系统 Taier 正式发布1.4版本
- Spark学习笔记1:Spark概览详解大数据
- Spark学习笔记5:Spark集群架构详解大数据
- 倾情大奉送–Spark入门实战系列详解大数据
- Spark入门实战系列–1.Spark及其生态圈简介详解大数据
- Spark入门实战系列–2.Spark编译与部署(中)–Hadoop编译安装详解大数据
- Spark入门实战系列–5.Hive(上)–Hive介绍及部署详解大数据
- Spark入门实战系列–6.SparkSQL(上)–SparkSQL简介详解大数据
- 贴几个spark提交任务的小脚本详解大数据
- Spark-Sql源码解析之八 Codegen详解大数据
- Spark-Sql源码解析之二 Sqlparser:sql –> unresolved logical plan详解大数据
- spark入门之四 任务的调度stages划分详解大数据
- spark入门之三 spark job提交详解大数据
- Hive的基本操作详解大数据
- spark和hadoop的区别详解大数据
- 探索大数据宝藏:使用Linux与Spark实现高效分析(linuxspark)
- Oracle数字转换为大写:实现快速准确的数据转换(oracle数字转换大写)
- 数据LL字符串接Oracle数据库一次丰富的技术旅程(ll字符串接oracle)
- 作为缓存Spark利用Redis缓冲数据的应用(spark需要redis)
- 使用Spark进行Redis数据读取(spark 读redis)
- 以Spark精准洞悉Redis潜力(spark分析redis)
- MySQL批量删除高效处理多条数据(mysql一次删除多条)
- 极速前进基于Spark的Redis开发现代化(spark开发redis)
- 借助Redis实现节点数据高一致性(redis节点数据一致性)
- 跨服务器查询导入数据的sql语句