今天来介绍的是如何透过 NiFi 来与 Athena 和 Redshift 来取得或写入资料,其实两个设定都很类似,怎麽说呢?让我们继续看下去。
Athena 是一个底层为 Presto 为底所建立起来的 Search Engine,它帮助 User 可以轻松透过 SQL 来查询 s3 的资料。
而 Redshift 是 AWS 的 DataWarehouse,他是以 PostgreSQL 为底,它本身可以储存资料,也可以透过 Redshift Spenctrum 来建立 external table 对 S3 资料做查询,一样支援用 SQL 做查询等操作。
简单来说,两个差别在於 Athena 本身不储存 data,因为他是去对 S3 的资料做操作; Redshift 本身则是会储存资料。此外,Redshift 因为他是以 PostgreSQL 为底,所以两边 SQL 在有些 Query 会有点小差异。
简单概要介绍一下两个服务之後,接下来该如何在 Nifi 来使用他们呢?这边我先帮大家整理了一个表格,待会就会用到:
Athena | Redshit | ||
---|---|---|---|
JDBC Driver link | Athena JDBC | Redshift JDBC | |
Driver Class Name | com.simba.athena.jdvc.Driver | com.amazon.redshift.jdbc42.Driver | |
DB Connection URL | jdbc:awsathena://AwsRegion=[region];User=[AwsAccessKeyID];Password=[AwsSecretAccessKey];S3OutputLocation=[s3_folder] |
jdbc:redshift://nifi-redshift-cluster-testing.creydll8nevp.ap-northeast-1.redshift.amazonaws.com:5439/dev;AccessKeyID=[access_key_id];SecretAccessKey=[secret_access_key];Region=[region] |
待会如果我们要在 NiFi 对这两个服务做操作的时候,需要先下载这两个服务的 JDBC Driver,读者们可以点阅相关连结做下载。此外,我也有整理个别 JDBC Driver 的 class name 以及 connection URL,待会就可以轻松设定完成。
首先我们现在 Controller Service 新增2个 DBCPConnectionPool
,个别 for Athena 和 Redshift:
再来,我们先对 AthenaConnectionPool
来做设定,只要设定好三个参数:
jdbc:awsathena://AwsRegion=[region];User=[AwsAccessKeyID];Password=[AwsSecretAccessKey];S3OutputLocation=[s3_folder]
,记得要填上自己的 key 相关资讯com.simba.athena.jdvc.Driver
设定完没问题就可按下 Apply,接着 RedshiftConnectionPool
也是同样的设定方式:
jdbc:redshift://nifi-redshift-cluster-testing.creydll8nevp.ap-northeast-1.redshift.amazonaws.com:5439/dev;AccessKeyID=[access_key_id];SecretAccessKey=[secret_access_key];Region=[region]
,记得要填上自己的 key 相关资讯com.amazon.redshift.jdbc42.Driver
全部设定完後,就可以 Enabled 起来了。接着如何在 Processor 做应用呢?我们这边套用PutSQL
作为简单范例,先来看一下它的设定:
其实其他相关的 SQL Processor 都是一样的操作,ex. QueryDatabaseTableRecord
, ExecuteSQL
等,都是只要指定好先前建立好的 Controller Service,接着就可以用 SQL 去对服务的资料做操作,这样是不是十分简单呢?
今天这篇比较要去注意的是 JDBC Driver 的下载与设定,因为有牵动到 Controller Service,所以相较於其他服务是比较繁琐的,因为没有原生的 Processor 可以做使用。
但只要设定好其实用起来并不会太难,同时你也会发现这样的设定流程与我们先前在整合 RDB 的操作其实很类似,都是要透过 JDBC Driver 才能去做 DB 等载体去做操作,所以倘若未来有没支援的 Processor 时,或许 JDBC 这样的方式能解决你的问题。
上一篇完成了缴款纪录的查询,确认缴款纪录是否完成。 为了查询方便,每日批次去抓取前两日资料写入自己的...
正如Day 04 - Spring Boot 的前世今生所说,Spring Boot 为了简化设定提...
流程判断 if : 判断式的开头,只有一组且不须其他判断式一起使用。 else if : 判断式的第...
swift 首先我们来看看图片资源设定 撰写app的过程中 图片档案要非常小心 不要侵犯到别人的智慧...
Hello! 我是Charlie。 在这「30天肝出购物网站」系列文章中,我将与大家分享如何使用Dj...