客快物流大数据项目(五十三):实时ETL模块开发准备
目录
实时ETL模块开发准备
一、编写配置文件
二、创建包结构
三、编写工具类加载配置文件
实时ETL模块开发准备
一、编写配置文件
- 在公共模块的resources目录创建配置文件:config.properties
# CDH-6.2.1
bigdata.host=node2
# HDFS
dfs.uri=hdfs://node2:8020
# Local FS
local.fs.uri=file://
# Kafka
kafka.broker.host=node2
kafka.broker.port=9092
kafka.init.topic=kafka-topics --zookeeper node2:2181/kafka --create --replication-factor 1 --partitions 1 --topic logistics
kafka.logistics.topic=logistics
kafka.crm.topic=crm
# ZooKeeper
zookeeper.host=node2.
zookeeper.port=2181
# Kudu
kudu.rpc.host=node2
kudu.rpc.port=7051
kudu.http.host=node2
kudu.http.port=8051
# ClickHouse
clickhouse.driver=ru.yandex.clickhouse.ClickHouseDriver
clickhouse.url=jdbc:clickhouse://node2:8123/logistics?characterEncoding=utf-8&useSSL=false
clickhouse.user=root
clickhouse.password=123456
# ElasticSearch
elasticsearch.host=node2
elasticsearch.rpc.port=9300
elasticsearch.http.port=9200
# Azkaban
app.first.runnable=true
# Oracle JDBC
db.oracle.url="jdbc:oracle:thin:@//192.168.88.10:1521/ORCL"
db.oracle.user=root
db.oracle.password=123456
# MySQL JDBC
db.mysql.driver=com.mysql.jdbc.Driver
db.mysql.url=jdbc:mysql://192.168.88.10:3306/crm?useUnicode=true&characterEncoding=utf8&autoReconnect=true&failOverReadOnly=false
db.mysql.user=root
db.mysql.password=123456
## Data path of ETL program output ##
# Run in the yarn mode in Linux
spark.app.dfs.checkpoint.dir=/apps/logistics/dat-hdfs/spark-checkpoint
spark.app.dfs.data.dir=/apps/logistics/dat-hdfs/warehouse
spark.app.dfs.jars.dir=/apps/logistics/jars
# Run in the local mode in Linux
spark.app.local.checkpoint.dir=/apps/logistics/dat-local/spark-checkpoint
spark.app.local.data.dir=/apps/logistics/dat-local/warehouse
spark.app.local.jars.dir=/apps/logistics/jars
# Running in the local Mode in Windows
spark.app.win.checkpoint.dir=D://apps/logistics/dat-local/spark-checkpoint
spark.app.win.data.dir=D://apps/logistics/dat-local/warehouse
spark.app.win.jars.dir=D://apps/logistics/jars
二、创建包结构
本次项目采用scala编程语言,因此创建scala目录
包名 |
说明 |
cn.it.logistics.etl.realtime |
实时ETL程序所在包 |
cn.it.logistics.etl.parser |
Canal和Ogg数据解析类所在包 |
三、编写工具类加载配置文件
实现步骤:
- 在公共模块的scala目录下common包下创建 Configure 单例对象
- 编写代码
- 使用 ResourceBundle.getBundle 获取配置对象
- 调用config.getString方法加载 config.properties 配置
- 添加一个 main 方法测试,工具类是否能够正确读取出配置项
参考代码:
package cn.it.logistics.commonimport java.util.{Locale, ResourceBundle}/*** 读取配置文件的工具类*/
class Configuration {/*** 定义配置文件操作的对象*/private val resourceBundle: ResourceBundle = ResourceBundle.getBundle("config", new Locale("zh", "CN"))private val sep = ":"// CDH-6.2.1val bigdataHost: String = resourceBundle.getString("bigdata.host")// HDFSval dfsUri: String = resourceBundle.getString("dfs.uri")// Local FSval localFsUri: String = resourceBundle.getString("local.fs.uri")// Kafkaval kafkaBrokerHost: String = resourceBundle.getString("kafka.broker.host")val kafkaBrokerPort: Int = Integer.valueOf(resourceBundle.getString("kafka.broker.port"))val kafkaInitTopic: String = resourceBundle.getString("kafka.init.topic")val kafkaLogisticsTopic: String = resourceBundle.getString("kafka.logistics.topic")val kafkaCrmTopic: String = resourceBundle.getString("kafka.crm.topic")val kafkaAddress = kafkaBrokerHost+sep+kafkaBrokerPort// Sparkval LOG_OFF = "OFF"val LOG_DEBUG = "DEBUG"val LOG_INFO = "INFO"val LOCAL_HADOOP_HOME = "E:\\softs\\hadoop-3.0.0"val SPARK_KAFKA_FORMAT = "kafka"val SPARK_KUDU_FORMAT = "kudu"val SPARK_ES_FORMAT = "es"val SPARK_CLICKHOUSE_FORMAT = "clickhouse"// ZooKeeperval zookeeperHost: String = resourceBundle.getString("zookeeper.host")val zookeeperPort: Int = Integer.valueOf(resourceBundle.getString("zookeeper.port"))// Kuduval kuduRpcHost: String = resourceBundle.getString("kudu.rpc.host")val kuduRpcPort: Int = Integer.valueOf(resourceBundle.getString("kudu.rpc.port"))val kuduHttpHost: String = resourceBundle.getString("kudu.http.host")val kuduHttpPort: Int = Integer.valueOf(resourceBundle.getString("kudu.http.port"))val kuduRpcAddress = kuduRpcHost+sep+kuduRpcPort// ClickHouseval clickhouseDriver: String = resourceBundle.getString("clickhouse.driver")val clickhouseUrl: String = resourceBundle.getString("clickhouse.url")val clickhouseUser: String = resourceBundle.getString("clickhouse.user")val clickhousePassword: String = resourceBundle.getString("clickhouse.password")// ElasticSearchval elasticsearchHost: String = resourceBundle.getString("elasticsearch.host")val elasticsearchRpcPort: Int = Integer.valueOf(resourceBundle.getString("elasticsearch.rpc.port"))val elasticsearchHttpPort: Int = Integer.valueOf(resourceBundle.getString("elasticsearch.http.port"))val elasticsearchAddress = elasticsearchHost+sep+elasticsearchHttpPort// Azkabanval isFirstRunnable = java.lang.Boolean.valueOf(resourceBundle.getString("app.first.runnable"))// ## Data path of ETL program output ##// # Run in the yarn mode in Linuxval sparkAppDfsCheckpointDir = resourceBundle.getString("spark.app.dfs.checkpoint.dir")// /apps/logistics/dat-hdfs/spark-checkpointval sparkAppDfsDataDir = resourceBundle.getString("spark.app.dfs.data.dir")// /apps/logistics/dat-hdfs/warehouseval sparkAppDfsJarsDir = resourceBundle.getString("spark.app.dfs.jars.dir")// /apps/logistics/jars// # Run in the local mode in Linuxval sparkAppLocalCheckpointDir = resourceBundle.getString("spark.app.local.checkpoint.dir")// /apps/logistics/dat-local/spark-checkpointval sparkAppLocalDataDir = resourceBundle.getString("spark.app.local.data.dir")// /apps/logistics/dat-local/warehouseval sparkAppLocalJarsDir = resourceBundle.getString("spark.app.local.jars.dir")// /apps/logistics/jars// # Running in the local Mode in Windowsval sparkAppWinCheckpointDir = resourceBundle.getString("spark.app.win.checkpoint.dir")// D://apps/logistics/dat-local/spark-checkpointval sparkAppWinDataDir = resourceBundle.getString("spark.app.win.data.dir")// D://apps/logistics/dat-local/warehouseval sparkAppWinJarsDir = resourceBundle.getString("spark.app.win.jars.dir")// D://apps/logistics/jarsval dbOracleUrl = resourceBundle.getString("db.oracle.url")val dbOracleUser = resourceBundle.getString("db.oracle.user")val dbOraclePassword = resourceBundle.getString("db.oracle.password")val dbMySQLDriver = resourceBundle.getString("db.mysql.driver")val dbMySQLUrl = resourceBundle.getString("db.mysql.url")val dbMySQLUser = resourceBundle.getString("db.mysql.user")val dbMySQLPassword = resourceBundle.getString("db.mysql.password")
}
object Configuration extends Configuration {def main(args: Array[String]): Unit = {println(Configuration.dbOracleUrl)println(Configuration.dbMySQLDriver)println(Configuration.dbMySQLUrl)println(Configuration.dbMySQLPassword)}
}
-
客快物流大数据项目(五十三):实时ETL模块开发准备相关推荐
- 客快物流大数据项目(五十):项目框架初始化
目录 项目框架初始化 一.搭建工程 二.导入依赖 1.父工程依赖
- 客快物流大数据项目(五十六): 编写SparkSession对象工具类
编写SparkSession对象工具类 后续业务开发过程中,每个子业务(kudu.es.clickhouse等等)都会创建SparkSession对象,以及初始化开发环境,因此将环境初始化操作封装成工 ...
- 客快物流大数据项目(五十四):初始化Spark流式计算程序
目录 初始化Spark流式计算程序 一.SparkSql参数调优设置 1.设置会话时区
- 客快物流大数据项目(五十二):根据数据库表及字段创建公共模块
根据数据库表及字段创建公共模块 根据数据库的表及表结构创建Bean对象 一.在公共模块创建包结构 在公共模块的java目录下,创建如下程序包:
- 客快物流大数据项目(五):Docker介绍
目录 Docker介绍 一.什么是虚拟化 二.初识Docker
- 客快物流大数据项目学习框架
文章目录 客快物流大数据项目学习框架 前言 一.项目简介 二.功能介绍 三.项目背景 四.服务器资源规划 五.技术亮点及价值 六.智慧物流大数据平台 客快物流大数据项目学习框架 前言 利用框架的力量, ...
- 客快物流大数据项目(四):大数据项目为什么使用Docker
目录 大数据项目为什么使用Docker 一.场景一 二.场景二
- 客快物流大数据项目(一百零七):物流信息查询服务接口开发解决方案
文章目录 物流信息查询服务接口开发解决方案 一.业务需求 二.系统架构演变 1.集中式架构 2.垂直拆分 3.分布式服务 4.面向服务架构(SO ...
- 客快物流大数据项目(二十八):大数据服务器环境准备
目录 大数据服务器环境准备 一.服务器规划 二.Linux虚拟机环境搭建
最新文章
- CPU 周期信号、节拍周期信号、节拍脉冲信号三者之间的关系是什么?
- ganglia安装与配置
- 【Android开发教程】一、基础概念
- [密码学基础][每个信息安全博士生应该知道的52件事][Bristol52]49.描述在IPsec和TLS后的基本想法
- HtmlUnit优秀文章
- Java、JavaScript和JScript
- 服务器操作系统版本检查,服务器操作系统版本检查
- Linux之解决终端关闭,程序停止运行问题
- 6种java垃圾回收算法_学习java垃圾回收
- Table of Contents
- 自然语言在公路交通各建设阶段运用
- 树莓派安装中文输入法
- python学习之面对对象程序设计作业
- 微信小程序,画布中,根据需要展示的图片比例,获取能截取原图中的最大图片尺寸,并且不变形展示
- Lenovo windows 解决win键失灵
- pythongui界面管理系统_Python实现GUI学生信息管理系统
- 墨画子卿第一章第3节:挑衅
- java验证码验证码_Java登录页面实时验证用户名密码和动态验证码
- 看我用Python一秒发数百份邮件,让财务部妹子追着喊6
- 微信小程序在线考试系统 毕业设计(6)会员首页
热门文章
- 伍六七带你学算法 入门篇-矩形重叠
- 2022-2028年中国儿童保健品行业市场研究及前瞻分析报告
- 2022-2028年中国内衣行业研究及前瞻分析报告
- RabbitMQ 入门系列(11)— RabbitMQ 常用的工作模式(simple模式、work模式、publish/subscribe模式、routing模式、topic模式)
- Python 标准库之 fcntl
- Python os.getcwd() 方法
- Imagination发布四款RISC-V CPU
- 在cuDNN中简化Tensor Ops
- 用NVIDIA Tensor Cores和TensorFlow 2加速医学图像分割
- web站点的欢迎页面
- 客快物流大数据项目(五十):项目框架初始化