Seatunnel配置文件解读

mysql读取(读表,离线)

env {
	execution.parallelism = 1
}
# 在source所属的块中配置数据源
source {
      Jdbc {
        driver = "com.mysql.cj.jdbc.Driver"
        url = "jdbc:mysql://aaa:3306/bbb?serverTimezone=GMT%2b8&characterEncoding=utf-8"
        user = "root"
        password = "123456"
        query = "select * from ddd"
    }
}
# 在transform的块中声明转换插件
transform {

}
# 在sink块中声明要输出到哪
sink {
	Console {}
}

解读

env

env里面是一些基本设置,比如

execution.parallelism = 1是指并行条数为1

其他也没什么,比如设置等待时间,设置连接的url等等,一般只要上面一个就行

source 

source 里面大部分是读取,你要读取哪一个,比如redis,比如mysql等等,可以一次读取多个插件

上方mysql为例

driver,url,user,password都知道什么意思,就不多说

query 就是写sql语句的

ps1.aaa是ip地址,但是我如果用我的ip地址,会导致连接超时,只有用127.0.0.1的时候才能正常运行。

ps2.正常写完,配置全队也可能运行不起来,需要自己去下数据库驱动程序,复制到

$SEATNUNNEL_HOME/plugins/jdbc/lib/

下面才能正常工作,比如复制mysql-connector-java-xxx.jar,复制到$SEATNUNNEL_HOME/plugins/jdbc/lib/mysql-connector-java-xxx.jar   就可以了

redis读取

env {
	execution.parallelism = 1
}
# 在source所属的块中配置数据源
source {
  Redis {
    host = aaa
    port = 6379
    keys = "bbb"
    data_type = key
    format = json
    schema {
      fields {
       		tname = string
        		tage = int
		    }
  		}
  	}
}
# 在transform的块中声明转换插件
transform {

}
# 在sink块中声明要输出到哪
sink {
Console {}
}

解读

keys后的内容就是redis的key值,可以用 * 模糊搜索

format=json时,就必须要有 schema。

fields里的内容要和redis内容相匹配,等号后是类型,并不是值

redis传值到mysql

env {
	execution.parallelism = 1
}
# 在source所属的块中配置数据源
source {
  Redis {
    host = xxx
    port = 6379
    keys = "xxx"
    data_type = key
    format = json
    schema {
      fields {
       		tname = string
        		tage = int
		    }
  		}
  	}
}
# 在transform的块中声明转换插件
transform {

}
# 在sink块中声明要输出到哪
sink {
	 jdbc {
        driver = "com.mysql.cj.jdbc.Driver"
        url = "jdbc:mysql://127.0.0.1:3306/seatunnel?serverTimezone=GMT%2b8&characterEncoding=utf-8"
        user = "root"
        password = "123456"
        query = "insert into day_test values(?,?)"
    }
}

解读

大致并没有多少变化,主要就是sql语句由查询变为了插入

-------------------------------------------------------------------------------------------------------------------------------

Hive 

1.部署Hive,请看Hive部署

2.使用Flink提交作业的方式

ps1.错误

java.lang.NoClassDefFoundError: org/apache/hadoop/hive/metastore/api/MetaException

 百度了很久的解决办法是,Flink启动hive的时候是有依赖包的,并不是直接就能启动

Flink 集成 Hive 需要额外添加一些依赖 jar 包,并将其放在 Flink 安装目录下的 lib 文件夹下,这样才能通过 Table API 或 SQL Client 与 Hive 进行交互。

使用 Flink 提供的 Hive jar

根据使用的 Hive 版本,下载对应的 jar 即可

Hive版本号需要的依赖jar包版本下载地址
1.0.0 ~ 1.2.2flink-sql-connector-hive-1.2.2下载
2.0.0 ~2.2.0flink-sql-connector-hive-2.2.0下载
2.3.0 ~2.3.6flink-sql-connector-hive-2.3.6下载
3.0.0 ~ 3.1.2flink-sql-connector-hive-3.1.2下载

用户定义的依赖项 

以Hive 3.1.2为例,除了 flink-sql-connector-hive-3.1.2.jar 是我们使用 Flink SQL Cli 时所需要的 jar 外,还需要添加以下 jar

依赖的jar下载地址
flink-connector-hive_2.12-1.12.0.jar下载
flink-shaded-hadoop-3-uber-3.1.1.7.1.1.0-565-9.0.jar下载
hive-exec-3.1.2.jarHive的lib目录下
libfb303-0.9.3.jarHive的lib目录下

开始连接 ,配置文件

ps2.按官方给的案例去写的,但是保存拒绝连接

 

 后来发现案例里面没有用上schema去设置,于是修改成(Hive字段就设置了两个,mysql也是两个)

env {
	execution.parallelism = 1
}
# 在source所属的块中配置数据源
source {
     Hive {
    table_name = "mydemo.hive_mysql"
    metastore_uri = "thrift://127.0.0.1:9083"
    schema {
      fields {
       		hname = string
        		hage= int
		    }
  		}
  }
}
# 在transform的块中声明转换插件
transform {

}
# 在sink块中声明要输出到哪
sink {
	Console {}
}

 然后互传的没什么改变,就是sink(输出位置)里放你要输出的,soucr(获取位置)里放你要从哪获取。

下一个kafka获取mysql CDC,等我完成了在更新

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值