IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Apache Spark:拉取iotdb的数据并导入到mysql中 -> 正文阅读

[大数据]Apache Spark:拉取iotdb的数据并导入到mysql中

当前spark版本:2.4.6

1. 声明

当前内容主要为本人学习Spark的sql执行操作,实现数据获取和数据入库,当前内容参考:Spark官方文档

2. pom依赖

<dependencies>
	<!-- https://mvnrepository.com/artifact/org.apache.spark/spark-core -->
	<dependency>
		<groupId>org.apache.spark</groupId>
		<artifactId>spark-core_2.11</artifactId>
		<version>2.4.6</version>
		<scope>provided</scope>
		<!-- tried to access method com.google.common.base.Stopwatch.<init>()V 
			from class org.apache.hadoop.mapred.FileInputFormat 使用低版本的可以解决问题 -->
		<exclusions>
			<exclusion>
				<groupId>com.google.guava</groupId>
				<artifactId>guava</artifactId>
			</exclusion>
		</exclusions>
	</dependency>
	<dependency>
		<groupId>com.google.guava</groupId>
		<artifactId>guava</artifactId>
		<version>15.0</version>
	</dependency>
	<!-- https://mvnrepository.com/artifact/org.apache.spark/spark-sql -->
	<dependency>
		<groupId>org.apache.spark</groupId>
		<artifactId>spark-sql_2.11</artifactId>
		<version>2.4.6</version>
		<scope>provided</scope>
	</dependency>
<!-- 		<dependency>
		<groupId>org.apache.spark</groupId>
		<artifactId>spark-sql_2.12</artifactId>
		<version>2.4.6</version>
		<scope>provided</scope>
	</dependency>
	 -->


	<dependency>
		<groupId>org.apache.iotdb</groupId>
		<artifactId>spark-iotdb-connector</artifactId>
		<version>0.11.1</version>
		<scope>provided</scope>
	</dependency>
		<dependency>
		<groupId>mysql</groupId>
		<artifactId>mysql-connector-java</artifactId>
		<version>8.0.13</version>
	</dependency>
	<dependency>
		<groupId>junit</groupId>
		<artifactId>junit</artifactId>
		<version>3.8.1</version>
		<scope>test</scope>
	</dependency>
</dependencies>

这里注意:为2.11不是2.12,如果使用2.12就会报错:Caused by: java.lang.ClassNotFoundException: scala.Product$class

3. demo

1. 首先开启iotdb(这里使用0.11.2版本),然后再开启mysql
2.在mysql中创建一个数据库

3. 开始编写代码


import org.apache.spark.api.java.JavaRDD;
import org.apache.spark.sql.Dataset;
import org.apache.spark.sql.Row;
import org.apache.spark.sql.SparkSession;

import scala.Tuple1;

/**
 * 
 * @author hy
 * @createTime 2021-08-22 10:35:10
 * @description 当前内容主要为使用spark连接iotdb数据库并执行操作,并将当前的数据存放在mysql中
 *
 */
public class SparkOperationIotdbTest {
	public static void main(String[] args) {
		// 注意出现这个错误:Caused by: java.lang.ClassNotFoundException: scala.Product$class
		// 表示当前的spark的本地版本需要修改为 原版本2.12-->2.11的版本
		// 之后执行就好了

		SparkSession spark = SparkSession.builder().appName("Java App Test").master("local")
				/* .master("spark://192.168.1.101:7077") */
				.getOrCreate();

		Dataset<Row> df = spark.read().format("org.apache.iotdb.spark.db")
				.option("url", "jdbc:iotdb://localhost:6667/")
				.option("user", "root")
				.option("password", "root")
				.option("sql", "select last * from root.test").load();

		// 打印出当前的schame
		df.printSchema();

		// 显示执行的sql的数据集
		df.show();
		/*
		 * JavaRDD<Row> javaRDD = df.toJavaRDD(); javaRDD.
		 */
		
		// 然后将这个iotdb的数据写入到mysql数据库中
		df.write().format("jdbc")
		.option("driver","com.mysql.cj.jdbc.Driver")
		.option("url", "jdbc:mysql://localhost:3306/spark_iotdb_to_mysql?serverTimezone=UTC&useUnicode=true&characterEncoding=UTF-8")
		.option("user", "root")
		.option("password", "root")
		.option("dbtable", "iotdb_data_table")
		.save();
		// Dataset<Row> narrowTable = Transformer.toNarrowForm(spark, df);
		// narrowTable.show();

	}
}

这里使用local表示使用本地执行方式,spark.read().load()表示读的操作,spark.write().save()表示写的操作,只需要填写好库即可,spark会自动创建表和需要的字段

注意:如果该表已存在,那么就会执行报错!

执行成功的结果为:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
测试成功!

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-08-23 16:45:39  更:2021-08-23 16:47:53 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年10日历 -2024/10/25 20:25:34-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码