Showing preview only (1,123K chars total). Download the full file or copy to clipboard to get everything.
Repository: bluishglc/bdp
Branch: master
Commit: 3e31b59b52d2
Files: 240
Total size: 1.0 MB
Directory structure:
gitextract_qs4y4bl1/
├── .gitattributes
├── .gitignore
├── README.md
├── bdp-collect/
│ ├── .gitignore
│ ├── README.md
│ ├── build.bat
│ ├── pom.xml
│ └── src/
│ └── main/
│ ├── assembly/
│ │ ├── bin-delta.xml
│ │ └── bin.xml
│ ├── java/
│ │ └── com/
│ │ └── github/
│ │ └── bdp/
│ │ └── collect/
│ │ ├── Main.java
│ │ └── processors/
│ │ └── DateShiftProcessor.java
│ ├── profiles/
│ │ ├── cluster.properties
│ │ └── standalone.properties
│ └── resources/
│ ├── bin/
│ │ └── bdp-collect.sh
│ ├── conf/
│ │ ├── bdp-collect.properties
│ │ ├── camel-context.xml
│ │ └── log4j.properties
│ └── deploy.bat
├── bdp-dwh/
│ ├── .gitignore
│ ├── README.md
│ ├── build.bat
│ ├── pom.xml
│ └── src/
│ └── main/
│ ├── assembly/
│ │ └── bin.xml
│ ├── profiles/
│ │ ├── cluster.properties
│ │ └── standalone.properties
│ ├── resources/
│ │ ├── bin/
│ │ │ ├── bdp-dwh.sh
│ │ │ ├── dmt-infra-metric.sh
│ │ │ ├── dmt-master-data.sh
│ │ │ ├── dwh-bdp-master.sh
│ │ │ ├── dwh-bdp-metric.sh
│ │ │ ├── src-bdp-master.sh
│ │ │ ├── src-bdp-metric.sh
│ │ │ └── util.sh
│ │ ├── deploy.bat
│ │ └── lib/
│ │ ├── dmt/
│ │ │ ├── infra-metric/
│ │ │ │ ├── action/
│ │ │ │ │ ├── build-fact_metric.sql
│ │ │ │ │ ├── build-sum_metric_avg.sql
│ │ │ │ │ └── build-wide_metric_avg.sql
│ │ │ │ ├── bin/
│ │ │ │ │ └── spark-actions.sh
│ │ │ │ └── schema/
│ │ │ │ ├── fact_metric.sql
│ │ │ │ ├── sum_metric_avg.sql
│ │ │ │ └── wide_metric_avg.sql
│ │ │ └── master-data/
│ │ │ ├── action/
│ │ │ │ ├── build-dim_app.sql
│ │ │ │ ├── build-dim_hour.sql
│ │ │ │ ├── build-dim_metric_index.sql
│ │ │ │ ├── build-dim_metric_threshold.sql
│ │ │ │ └── build-dim_server.sql
│ │ │ ├── bin/
│ │ │ │ └── spark-actions.sh
│ │ │ ├── data/
│ │ │ │ └── dim_hour.csv
│ │ │ └── schema/
│ │ │ ├── dim_app.sql
│ │ │ ├── dim_hour.sql
│ │ │ ├── dim_metric_index.sql
│ │ │ ├── dim_metric_threshold.sql
│ │ │ └── dim_server.sql
│ │ ├── dwh/
│ │ │ ├── bdp-master/
│ │ │ │ ├── action/
│ │ │ │ │ ├── build-app.sql
│ │ │ │ │ ├── build-metric_index.sql
│ │ │ │ │ ├── build-metric_threshold.sql
│ │ │ │ │ └── build-server.sql
│ │ │ │ ├── bin/
│ │ │ │ │ └── spark-actions.sh
│ │ │ │ └── schema/
│ │ │ │ ├── app.sql
│ │ │ │ ├── metric_index.sql
│ │ │ │ ├── metric_threshold.sql
│ │ │ │ └── server.sql
│ │ │ └── bdp-metric/
│ │ │ ├── action/
│ │ │ │ └── build-metric.sql
│ │ │ ├── bin/
│ │ │ │ └── spark-actions.sh
│ │ │ └── schema/
│ │ │ └── metric.sql
│ │ └── src/
│ │ ├── bdp-master/
│ │ │ ├── action/
│ │ │ │ ├── build-app.sql
│ │ │ │ ├── build-metric_index.sql
│ │ │ │ ├── build-metric_threshold.sql
│ │ │ │ └── build-server.sql
│ │ │ ├── bin/
│ │ │ │ ├── spark-actions.sh
│ │ │ │ └── sqoop-actions.sh
│ │ │ └── schema/
│ │ │ ├── app.sql
│ │ │ ├── metric_index.sql
│ │ │ ├── metric_threshold.sql
│ │ │ └── server.sql
│ │ └── bdp-metric/
│ │ ├── action/
│ │ │ └── build-metric.sql
│ │ ├── bin/
│ │ │ ├── spark-actions.sh
│ │ │ └── sqoop-actions.sh
│ │ └── schema/
│ │ └── metric.sql
│ └── scala/
│ └── com.github.bdp.dwh.udf/
│ └── GenRag.scala
├── bdp-import/
│ ├── .gitignore
│ ├── README.md
│ ├── build.bat
│ ├── pom.xml
│ └── src/
│ └── main/
│ ├── assembly/
│ │ └── bin.xml
│ ├── profiles/
│ │ ├── cluster.properties
│ │ └── standalone.properties
│ └── resources/
│ ├── bin/
│ │ ├── bdp-import.sh
│ │ ├── bdp-master-import.sh
│ │ ├── bdp-metric-import.sh
│ │ └── util.sh
│ └── deploy.bat
├── bdp-master-client/
│ ├── .gitignore
│ ├── README.md
│ ├── pom.xml
│ └── src/
│ └── main/
│ ├── profiles/
│ │ ├── cluster.properties
│ │ ├── local.properties
│ │ └── standalone.properties
│ ├── resources/
│ │ ├── bdp-master-client.conf
│ │ └── log4j.properties
│ └── scala/
│ └── com/
│ └── github/
│ └── bdp/
│ └── master/
│ └── client/
│ ├── Constants.scala
│ ├── Main.scala
│ ├── domain/
│ │ ├── AlertIndex.scala
│ │ ├── App.scala
│ │ ├── MetricIndex.scala
│ │ ├── MetricThreshold.scala
│ │ ├── SEVERITY.scala
│ │ ├── Server.scala
│ │ └── TSD.scala
│ ├── service/
│ │ ├── AlertIndexService.scala
│ │ ├── AppService.scala
│ │ ├── MetricIndexService.scala
│ │ └── ServerService.scala
│ └── util/
│ ├── JsonDecoder.scala
│ └── RedisClient.scala
├── bdp-master-server/
│ ├── .gitignore
│ ├── README.md
│ ├── build.bat
│ ├── pom.xml
│ └── src/
│ └── main/
│ ├── assembly/
│ │ ├── bin-delta.xml
│ │ └── bin.xml
│ ├── java/
│ │ └── com/
│ │ └── github/
│ │ └── bdp/
│ │ └── master/
│ │ └── server/
│ │ ├── Constants.java
│ │ ├── Main.java
│ │ ├── RedisConfig.java
│ │ ├── controller/
│ │ │ ├── AlertIndexController.java
│ │ │ ├── AppController.java
│ │ │ ├── AppStartupListener.java
│ │ │ ├── MetricIndexController.java
│ │ │ └── ServerController.java
│ │ ├── domain/
│ │ │ ├── AlertIndex.java
│ │ │ ├── App.java
│ │ │ ├── MetricIndex.java
│ │ │ ├── MetricThreshold.java
│ │ │ └── Server.java
│ │ ├── repository/
│ │ │ ├── AlertIndexJpaRepository.java
│ │ │ ├── AlertIndexRedisRepository.java
│ │ │ ├── AppJpaRepository.java
│ │ │ ├── AppRedisRepository.java
│ │ │ ├── MetricIndexJpaRepository.java
│ │ │ ├── MetricIndexRedisRepository.java
│ │ │ ├── MetricThresholdRepository.java
│ │ │ ├── ServerJpaRepository.java
│ │ │ ├── ServerRedisRepository.java
│ │ │ └── impl/
│ │ │ ├── AlertIndexRedisRepositoryImpl.java
│ │ │ ├── AppRedisRepositoryImpl.java
│ │ │ ├── MetricIndexRedisRepositoryImpl.java
│ │ │ └── ServerRedisRepositoryImpl.java
│ │ └── service/
│ │ ├── AlertIndexService.java
│ │ ├── AppService.java
│ │ ├── MetricIndexService.java
│ │ ├── ServerService.java
│ │ └── impl/
│ │ ├── AlertIndexServiceImpl.java
│ │ ├── AppServiceImpl.java
│ │ ├── MetricIndexServiceImpl.java
│ │ └── ServerServiceImpl.java
│ ├── profiles/
│ │ ├── cluster.properties
│ │ └── standalone.properties
│ └── resources/
│ ├── bin/
│ │ └── bdp-master-server.sh
│ ├── conf/
│ │ ├── application.properties
│ │ ├── bdp-master-data-2018-09-01.sql
│ │ ├── bdp-master-data-2018-09-02.sql
│ │ └── logback.xml
│ └── deploy.bat
├── bdp-metric/
│ ├── .gitignore
│ ├── README.md
│ ├── build.bat
│ ├── pom.xml
│ └── src/
│ └── main/
│ ├── assembly/
│ │ └── bin.xml
│ ├── profiles/
│ │ ├── cluster.properties
│ │ └── standalone.properties
│ └── resources/
│ ├── bin/
│ │ └── bdp-metric.sh
│ ├── deploy.bat
│ └── sql/
│ ├── gen-alert.sql
│ ├── gen-cpu-usage.sql
│ ├── gen-mem-used.sql
│ └── schema.sql
├── bdp-parent/
│ ├── .gitignore
│ ├── README.md
│ └── pom.xml
├── bdp-stream/
│ ├── .gitignore
│ ├── README.md
│ ├── build.bat
│ ├── pom.xml
│ └── src/
│ └── main/
│ ├── assembly/
│ │ ├── bin-delta.xml
│ │ └── bin.xml
│ ├── profiles/
│ │ ├── cluster.properties
│ │ └── standalone.properties
│ ├── resources/
│ │ ├── bin/
│ │ │ └── bdp-stream.sh
│ │ ├── conf/
│ │ │ ├── bdp-stream.conf
│ │ │ ├── fairscheduler.xml
│ │ │ ├── hbase-site.xml
│ │ │ ├── log4j-driver.properties
│ │ │ └── log4j-executor.properties
│ │ └── deploy.bat
│ └── scala/
│ └── com/
│ └── github/
│ └── bdp/
│ └── stream/
│ ├── AlertStream.scala
│ ├── Constants.scala
│ ├── Main.scala
│ ├── MetricStream.scala
│ ├── assembler/
│ │ ├── AlertAssembler.scala
│ │ ├── MetricAssembler.scala
│ │ └── ServerStateAssembler.scala
│ ├── model/
│ │ ├── Alert.scala
│ │ ├── AlertRegistry.scala
│ │ ├── Metric.scala
│ │ └── ServerState.scala
│ ├── service/
│ │ ├── AlertService.scala
│ │ └── MetricService.scala
│ └── util/
│ ├── ForeachWriters.scala
│ ├── HBaseClient.scala
│ └── JsonDecoder.scala
└── bdp-workflow/
├── .gitignore
├── README.md
├── build.bat
├── pom.xml
└── src/
└── main/
├── assembly/
│ └── bin.xml
├── profiles/
│ ├── cluster.properties
│ └── standalone.properties
└── resources/
├── bin/
│ ├── bdp-workflow.sh
│ └── util.sh
├── deploy.bat
└── lib/
├── ds-bdp-master-daily-build/
│ ├── coordinator.xml
│ ├── sub-workflow/
│ │ ├── app.xml
│ │ ├── metric-index.xml
│ │ ├── metric-threshold.xml
│ │ └── server.xml
│ └── workflow.xml
├── ds-bdp-metric-daily-build/
│ ├── coordinator.xml
│ ├── sub-workflow/
│ │ └── metric.xml
│ └── workflow.xml
├── sj-infra-metric-daily-build/
│ ├── coordinator.xml
│ ├── sub-workflow/
│ │ ├── fact-metric.xml
│ │ ├── sum-metric-avg.xml
│ │ └── wide-metric-avg.xml
│ └── workflow.xml
└── sj-master-data-daily-build/
├── coordinator.xml
├── sub-workflow/
│ ├── app.xml
│ ├── metric-index.xml
│ ├── metric-threshold.xml
│ └── server.xml
└── workflow.xml
================================================
FILE CONTENTS
================================================
================================================
FILE: .gitattributes
================================================
*.sh -crlf linguist-language=java
================================================
FILE: .gitignore
================================================
.idea
/*.iml
target
================================================
FILE: README.md
================================================
# 大数据平台工程原型(Big Data Platform Project Prototype)
2008年Hadoop成为Apache的顶级项目,以此为开端,大数据技术迎来了十多年的持续发展,其间随着Spark的异军突起,整个大数据生态圈又经历了一次“装备升级”,变得更加完善和强大。今天,很多企业已经完成了早期对大数据技术的尝试和探索转而进入到应用阶段,但不得不说的是,大数据平台的架构体系非常庞大,技术堆栈特别深,从事大数据开发的同学对此应该都深有体会。
而在很多细分领域(例如实时计算、作业调度)也没有像样的工程模板, 这一现状与Java社区使用Spring Boot信手拈来地搭建Web工程原型形成了鲜明了对比。这导致很多团队在启动大数据平台建设时往往感到无所侍从,也使得希望深入学习大数据技术的开发者由于缺少工程级的示例参考而感到迷茫。
该原型项目就是以此为命题创建的,它基于过往项目的最佳实践提炼而来,可以帮助团队快速启动开发,上手就写业务代码。
本项目同时是《[大数据平台架构与原型实现:数据中台建设实战](https://item.jd.com/12677623.html)》一书的配套示例代码。该书已由知名IT图书品牌电子工业出版社博文视点出版发行,在京东和当当有售。
关于如何部署和运行该项目,书中做了非常细致的讲解。
京东购书链接:[https://item.jd.com/12677623.html](https://item.jd.com/12677623.html)
当当购书链接:[http://product.dangdang.com/28974965.html](http://product.dangdang.com/28974965.html)
点击[《重磅推荐:建大数据平台太难了!给我发个工程原型吧!》](https://laurence.blog.csdn.net/article/details/106851739)了解图书详情,扫码进入京东手机购书页面!

---
## 部署原型项目使用到的脚本
《[大数据平台架构与原型实现:数据中台建设实战](https://item.jd.com/12677623.html)》一书的第《4.5 部署原型项目》节详细介绍了该项目的部署和启动方法,为了免于手写代码,便于大家操作,我们将使用的相关脚本和配置粘贴出来:
- 4.5.1.1 在远程服务器上建立应用程序专有账号
```bash
# Run as 'root'
# add group if not exists
group=bdp
egrep "^$group\:" /etc/group >& /dev/null
if [ "$?" != "0" ]
then
groupadd "$group"
echo "Group: $group is added."
fi
users=(bdp-metric bdp-collect bdp-dwh bdp-master-server bdp-stream bdp-workflow)
password='Bdpp1234!'
for user in ${users[@]}
do
# add user if not exists and set password
egrep "^$user\:" /etc/passwd >& /dev/null
if [ "$?" != "0" ]
then
useradd -g "$group" "$user"
echo "User: $user is added."
echo "$user:$password"|chpasswd
echo "User: $user, password is reset."
fi
done
# enable all users of bdp group can sudo as hdfs.
echo '%bdp ALL = (hdfs) NOPASSWD: ALL'>/etc/sudoers.d/bdp
```
- 4.5.1.2 在HDFS上为程序专有账号创建Home目录
```bash
# create home on hdfs for users need hdfs storage
su -l hdfs
users=(bdp-dwh bdp-stream bdp-workflow)
for user in ${users[@]}
do
home=/user/$user
hdfs dfs -test -d $home && hdfs dfs -rm -r -f $home
hdfs dfs -mkdir -p $home
hdfs dfs -chown -R $user:bdp $home
done
exit
```
- 4.5.1.3 在HDFS上创建数据仓库所需文件夹
```bash
# create data zones
su -l hdfs
dirs=(/data/src /data/dwh /data/dmt /data/app /data/tmp /data/stg)
for dir in ${dirs[@]}
do
hdfs dfs -test -d $dir && hdfs dfs -rm -r -f $dir
hdfs dfs -mkdir -p $dir
hdfs dfs -chown -R bdp-dwh:bdp $dir
done
hdfs dfs -chmod a+w /data/tmp
exit
```
- 4.5.1.4 创建数据仓库
```sql
drop database if exists src cascade;
create database if not exists src
location '/data/src';
drop database if exists dwh cascade;
create database if not exists dwh
location '/data/dwh';
drop database if exists dmt cascade;
create database if not exists dmt
location '/data/dmt';
drop database if exists app cascade;
create database if not exists app
location '/data/app';
drop database if exists tmp cascade;
create database if not exists tmp
location '/data/tmp';
drop database if exists stg cascade;
create database if not exists stg
location '/data/stg';
```
- 4.5.1.5 创建bdp-stream的日志目录
```bash
mkdir /var/log/bdp-stream
chown bdp-stream:bdp /var/log/bdp-stream
chmod a+w /var/log/bdp-stream
```
- 4.5.1.9 创建`bdp_metric`和`bdp_master`数据库
```sql
-- 1. bdp_metric
DROP DATABASE IF EXISTS bdp_metric;
CREATE DATABASE IF NOT EXISTS bdp_metric DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
DROP USER IF EXISTS 'bdp_metric'@'%';
CREATE USER IF NOT EXISTS 'bdp_metric'@'%' IDENTIFIED BY 'Bdpp1234!';
GRANT ALL PRIVILEGES ON bdp_metric.* TO 'bdp_metric'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
-- 2. bdp_master
DROP DATABASE IF EXISTS bdp_master;
CREATE DATABASE IF NOT EXISTS bdp_master DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
DROP USER IF EXISTS 'bdp_master'@'%';
CREATE USER IF NOT EXISTS 'bdp_master'@'%' IDENTIFIED BY 'Bdpp1234!';
GRANT ALL PRIVILEGES ON bdp_master.* TO 'bdp_master'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
```
- 4.5.1.10 创建kafka topic
```bash
kafka-topics \
--zookeeper master1.cluster:2181,master1.cluster:2181,utility1.cluster:2181 \
--create \
--topic cpu.usage \
--partitions 12 \
--replication-factor 3
kafka-topics \
--zookeeper master1.cluster:2181,master1.cluster:2181,utility1.cluster:2181 \
--describe \
--topic cpu.usage
kafka-topics \
--zookeeper master1.cluster:2181,master1.cluster:2181,utility1.cluster:2181 \
--create \
--topic mem.used \
--partitions 12 \
--replication-factor 3
kafka-topics \
--zookeeper master1.cluster:2181,master1.cluster:2181,utility1.cluster:2181 \
--describe \
--topic mem.used
kafka-topics \
--zookeeper master1.cluster:2181,master1.cluster:2181,utility1.cluster:2181 \
--create \
--topic alert \
--partitions 12 \
--replication-factor 3
kafka-topics \
--zookeeper master1.cluster:2181,master1.cluster:2181,utility1.cluster:2181 \
--describe \
--topic alert
```
- 4.5.1.11 创建HBase数据表
```
disable 'metric'
drop 'metric'
create 'metric', {NAME=>'f', VERSIONS=>1, COMPRESSION => 'SNAPPY', BLOCKCACHE => 'true'}
disable 'alert'
drop 'alert'
create 'alert', {NAME=>'f', VERSIONS=>1, COMPRESSION => 'SNAPPY', BLOCKCACHE => 'true'}
disable 'server_state'
drop 'server_state'
create 'server_state', {NAME=>'f', VERSIONS=>1, COMPRESSION => 'SNAPPY', BLOCKCACHE => 'true'}
```
## 安装集群过程中使用到的脚本
《[大数据平台架构与原型实现:数据中台建设实战](https://item.jd.com/12677623.html)》一书的第三章介绍了一个7节点CDH集群的安装过程,为了免于手写代码,便于大家操作,我们将使用的相关脚本和配置粘贴出来:
- 3.3.4.1 生成yum repo文件
```bash
tee /etc/yum.repos.d/galera.repo <<EOF
[galera]
name = Galera
baseurl = https://releases.galeracluster.com/galera-3/centos/7/x86_64
gpgkey = https://releases.galeracluster.com/GPG-KEY-galeracluster.com
gpgcheck = 1
[mysql-wsrep]
name = MySQL-wsrep
baseurl = http://releases.galeracluster.com/mysql-wsrep-5.7/centos/7/x86_64
gpgkey = http://releases.galeracluster.com/mysql-wsrep-5.7/GPG-KEY-galeracluster.com
gpgcheck = 1
EOF
```
- 3.3.4.4 配置Galera集群
```bash
[root@master1 ~]# tee /etc/my.cnf <<EOF
!includedir /etc/my.cnf.d/
[mysqld]
max_connections=1000
max_connect_errors=10000
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
binlog_format=ROW
bind-address=0.0.0.0
default_storage_engine=innodb
innodb_autoinc_lock_mode=2
innodb_flush_log_at_trx_commit=0
innodb_buffer_pool_size=122M
character-set-server=utf8
collation-server=utf8_general_ci
character_set_server=utf8
collation_server=utf8_general_ci
wsrep_provider=/usr/lib64/galera-3/libgalera_smm.so
wsrep_provider_options="gcache.size=300M; gcache.page_size=300M"
wsrep_cluster_name="mysql_cluster"
wsrep_cluster_address="gcomm://master1.cluster,master2.cluster,utility1.cluster"
wsrep_node_name="master1.cluster"
wsrep_node_address="10.0.0.86"
wsrep_sst_method=rsync
[mysql_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
EOF
```
- 3.3.5.1 下载CDH Repository
```bash
nohup wget --recursive --no-parent --no-host-directories https://archive.cloudera.com/cm5/redhat/7/x86_64/cm/5.15.2/ -P /opt/nginx/cloudera-repos &
nohup wget --recursive --no-parent --no-host-directories https://archive.cloudera.com/cm5/redhat/7/x86_64/cm/RPM-GPG-KEY-cloudera -P /opt/nginx/cloudera-repos &
nohup wget --recursive --no-parent --no-host-directories https://archive.cloudera.com/cdh5/parcels/5.15.2/ -P /opt/nginx/cloudera-repos &
```
- 3.3.5.2 安装并配置Nginx
```conf
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
root /opt/nginx;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location / {
autoindex on;
}
}
```
- 3.3.5.3 生成Repository描述文件
```bash
tee /etc/yum.repos.d/cloudera-manager.repo <<EOF
[cloudera-manager]
name=Cloudera Manager 5.15.2
baseurl=http://utility1.cluster/cloudera-repos/cm5/redhat/7/x86_64/cm/5.15.2/
gpgkey=http://utility1.cluster/cloudera-repos/cm5/redhat/7/x86_64/cm/RPM-GPG-KEY-cloudera
gpgcheck=1
EOF
```
- 3.3.6.3 创建CDH各服务使用的数据库
```sql
-- 1. scm
DROP DATABASE IF EXISTS scm;
CREATE DATABASE IF NOT EXISTS scm DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
DROP USER IF EXISTS 'scm'@'%';
CREATE USER IF NOT EXISTS 'scm'@'%' IDENTIFIED BY 'Bdpp1234!';
GRANT ALL PRIVILEGES ON scm.* TO 'scm'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
-- 2. amon
DROP DATABASE IF EXISTS amon;
CREATE DATABASE IF NOT EXISTS amon DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
DROP USER IF EXISTS 'amon'@'%';
CREATE USER IF NOT EXISTS 'amon'@'%' IDENTIFIED BY 'Bdpp1234!';
GRANT ALL PRIVILEGES ON amon.* TO 'amon'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
-- 3. rman
DROP DATABASE IF EXISTS rman;
CREATE DATABASE IF NOT EXISTS rman DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
DROP USER IF EXISTS 'rman'@'%';
CREATE USER IF NOT EXISTS 'rman'@'%' IDENTIFIED BY 'Bdpp1234!';
GRANT ALL PRIVILEGES ON rman.* TO 'rman'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
-- 4. hue
DROP DATABASE IF EXISTS hue;
CREATE DATABASE IF NOT EXISTS hue DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
DROP USER IF EXISTS 'hue'@'%';
CREATE USER IF NOT EXISTS 'hue'@'%' IDENTIFIED BY 'Bdpp1234!';
GRANT ALL PRIVILEGES ON hue.* TO 'hue'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
-- 5. hive
DROP DATABASE IF EXISTS hive;
CREATE DATABASE IF NOT EXISTS hive DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
DROP USER IF EXISTS 'hive'@'%';
CREATE USER IF NOT EXISTS 'hive'@'%' IDENTIFIED BY 'Bdpp1234!';
GRANT ALL PRIVILEGES ON hive.* TO 'hive'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
-- 6. sentry
DROP DATABASE IF EXISTS sentry;
CREATE DATABASE IF NOT EXISTS sentry DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
DROP USER IF EXISTS 'sentry'@'%';
CREATE USER IF NOT EXISTS 'sentry'@'%' IDENTIFIED BY 'Bdpp1234!';
GRANT ALL PRIVILEGES ON sentry.* TO 'sentry'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
-- 7. nav
DROP DATABASE IF EXISTS nav;
CREATE DATABASE IF NOT EXISTS nav DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
DROP USER IF EXISTS 'nav'@'%';
CREATE USER IF NOT EXISTS 'nav'@'%' IDENTIFIED BY 'Bdpp1234!';
GRANT ALL PRIVILEGES ON nav.* TO 'nav'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
-- 8. navms
DROP DATABASE IF EXISTS navms;
CREATE DATABASE IF NOT EXISTS navms DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
DROP USER IF EXISTS 'navms'@'%';
CREATE USER IF NOT EXISTS 'navms'@'%' IDENTIFIED BY 'Bdpp1234!';
GRANT ALL PRIVILEGES ON navms.* TO 'navms'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
-- 9. oozie
DROP DATABASE IF EXISTS oozie;
CREATE DATABASE IF NOT EXISTS oozie DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
DROP USER IF EXISTS 'oozie'@'%';
CREATE USER IF NOT EXISTS 'oozie'@'%' IDENTIFIED BY 'Bdpp1234!';
GRANT ALL PRIVILEGES ON oozie.* TO 'oozie'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
```
- 3.3.6.4. 安装MySQL JDBC Driver
```bash
wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.48.tar.gz
tar zxvf mysql-connector-java-5.1.48.tar.gz
mkdir -p /usr/share/java/
cp mysql-connector-java-5.1.48/mysql-connector-java-5.1.48-bin.jar /usr/share/java/mysql-connector-java.jar
```
- 3.3.10 启用Spark SQL
```bash
cp hive-cli-1.2.1.spark2.jar /opt/cloudera/parcels/SPARK2/lib/spark2/jars/
cp spark-hive-thriftserver_2.11-2.3.0.jar /opt/cloudera/parcels/SPARK2/lib/spark2/jars/
cp stop-thriftserver.sh /opt/cloudera/parcels/SPARK2/lib/spark2/sbin/
cp start-thriftserver.sh /opt/cloudera/parcels/SPARK2/lib/spark2/sbin/
cp spark-sql /opt/cloudera/parcels/SPARK2/lib/spark2/bin/
```
```bash
alternatives --install /usr/bin/spark-shell spark-shell /opt/cloudera/parcels/SPARK2/bin/spark2-shell 1
alternatives --install /usr/bin/spark-sql spark-sql /opt/cloudera/parcels/SPARK2/bin/spark2-sql 1
alternatives --install /usr/bin/spark-submit spark-submit /opt/cloudera/parcels/SPARK2/bin/spark2-submit 1
alternatives --install /etc/spark/conf spark-conf /etc/spark2/conf.cloudera.spark2_on_yarn 1
alternatives --remove spark-shell /opt/cloudera/parcels/CDH-5.15.2-1.cdh5.15.2.p0.3/bin/spark-shell
alternatives --remove spark-submit /opt/cloudera/parcels/CDH-5.15.2-1.cdh5.15.2.p0.3/bin/spark-submit
```
================================================
FILE: bdp-collect/.gitignore
================================================
.idea
/*.iml
target
================================================
FILE: bdp-collect/README.md
================================================
关于本子项目的部署、运行与代码细节,请参考《大数据平台架构与原型实现:数据中台建设实战》一书第5章以及第4章4.5节
================================================
FILE: bdp-collect/build.bat
================================================
@echo off
rem A batch script to build -> deploy -> restart
rem -- Laurence Geng
if [%1]==[] (
echo.
echo Usage: %0 [-delta] maven-profile-1 maven-profile-2 ...
echo.
echo Option: -delta: only deploy modified part, i.e. project artifact, used for development deploy.
goto end
)
set deltaDeploy=0
if "%~1"=="-delta" (
set deltaDeploy=1
shift
)
set profiles=%~1
:loopProfiles
shift
if "%~1"=="" (
goto build
) else (
set profiles=%profiles%,%~1
goto loopProfiles
)
:build
echo.
echo ***************************************************************************************
echo BUILD...
echo ***************************************************************************************
echo.
if "%profiles%"=="" (
call mvn clean install -DskipTests=true
) else (
call mvn clean install -DskipTests=true -P%profiles%
)
if "%errorlevel%"=="1" goto :buildfailed
if "%deltaDeploy%"=="1" (
call target\classes\deploy.bat -delta
) else (
call target\classes\deploy.bat
)
goto buildsuccess
:buildsuccess
echo.
echo.
echo ***************************************************************************************
echo BUILD SUCCESS!!
echo ***************************************************************************************
goto end
:buildfailed
echo.
echo.
echo ***************************************************************************************
echo BUILD FAILED!!
echo ***************************************************************************************
goto end
:end
================================================
FILE: bdp-collect/pom.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.github</groupId>
<artifactId>bdp-collect</artifactId>
<version>1.0</version>
<packaging>jar</packaging>
<name>bdp-collect</name>
<parent>
<groupId>com.github</groupId>
<artifactId>bdp-parent</artifactId>
<version>1.0</version>
<relativePath>../bdp-parent/pom.xml</relativePath>
</parent>
<repositories>
<repository>
<id>maven.lib.umd.edu</id>
<url>http://maven.lib.umd.edu/maven2/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-kafka</artifactId>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-stream</artifactId>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-sql</artifactId>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-jackson</artifactId>
</dependency>
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
</dependency>
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-core</artifactId>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-spring</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-expression</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-http4</artifactId>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
</dependency>
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka_2.11</artifactId>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
<exclusion>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka-clients</artifactId>
</dependency>
<dependency>
<groupId>com.typesafe</groupId>
<artifactId>config</artifactId>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-aws</artifactId>
</dependency>
</dependencies>
<profiles>
<profile>
<id>standalone</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<profile.id>standalone</profile.id>
</properties>
</profile>
<profile>
<id>cluster</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<profile.id>cluster</profile.id>
</properties>
</profile>
</profiles>
<build>
<filters>
<filter>src/main/profiles/${profile.id}.properties</filter>
</filters>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>${jdk.version}</source>
<target>${jdk.version}</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<!-- disable test when building. tests will run by external testng cmd! -->
<configuration>
<skip>true</skip>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<excludes>
<exclude>bin/*.bat</exclude>
<exclude>bin/*.sh</exclude>
<exclude>conf/*.xml</exclude>
<exclude>conf/*.conf</exclude>
<exclude>conf/*.properties</exclude>
</excludes>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<inherited>false</inherited>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
<configuration>
<descriptors>
<descriptor>src/main/assembly/bin.xml</descriptor>
<descriptor>src/main/assembly/bin-delta.xml</descriptor>
</descriptors>
</configuration>
</plugin>
</plugins>
</build>
</project>
================================================
FILE: bdp-collect/src/main/assembly/bin-delta.xml
================================================
<assembly xmlns="http://maven.apache.org/ASSEMBLY/2.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.0.0 http://maven.apache.org/xsd/assembly-2.0.0.xsd">
<id>bin-delta</id>
<formats>
<format>zip</format>
</formats>
<includeBaseDirectory>true</includeBaseDirectory>
<fileSets>
<fileSet>
<directory>target/classes/bin</directory>
<outputDirectory>./bin</outputDirectory>
<includes>
<include>*.sh</include>
</includes>
<fileMode>755</fileMode>
</fileSet>
<fileSet>
<directory>target/classes/conf</directory>
<outputDirectory>./conf</outputDirectory>
<includes>
<include>*.xml</include>
<include>*.conf</include>
<include>*.properties</include>
</includes>
</fileSet>
</fileSets>
<dependencySets>
<dependencySet>
<outputDirectory>./lib</outputDirectory>
<includes>
<include>com.github:bdp-collect</include>
</includes>
</dependencySet>
</dependencySets>
</assembly>
================================================
FILE: bdp-collect/src/main/assembly/bin.xml
================================================
<assembly xmlns="http://maven.apache.org/ASSEMBLY/2.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.0.0 http://maven.apache.org/xsd/assembly-2.0.0.xsd">
<id>bin</id>
<formats>
<format>zip</format>
</formats>
<includeBaseDirectory>true</includeBaseDirectory>
<fileSets>
<fileSet>
<directory>target</directory>
<outputDirectory>./lib</outputDirectory>
<includes>
<include>*.jar</include>
</includes>
</fileSet>
<fileSet>
<directory>target/classes/bin</directory>
<outputDirectory>./bin</outputDirectory>
<includes>
<include>*.sh</include>
</includes>
<fileMode>755</fileMode>
</fileSet>
<fileSet>
<directory>target/classes/conf</directory>
<outputDirectory>./conf</outputDirectory>
<includes>
<include>*.xml</include>
<include>*.conf</include>
<include>*.properties</include>
</includes>
</fileSet>
</fileSets>
<dependencySets>
<dependencySet>
<outputDirectory>./lib</outputDirectory>
</dependencySet>
</dependencySets>
</assembly>
================================================
FILE: bdp-collect/src/main/java/com/github/bdp/collect/Main.java
================================================
package com.github.bdp.collect;
import org.apache.camel.spring.SpringCamelContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Main {
private static final Logger logger = LoggerFactory.getLogger(Main.class);
public static void main(String[] args) throws Exception {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("camel-context.xml");
SpringCamelContext camelContext = context.getBean(SpringCamelContext.class);
try {
camelContext.start();
Runtime.getRuntime().addShutdownHook(new Thread() {
@Override
public void run() {
try {
camelContext.stop();
context.close();
} catch (Exception ex) {
logger.error("stop camel context error:" + ex.getMessage());
}
}
});
logger.info("camel context started!");
camelContext.start();
Thread.sleep(Long.MAX_VALUE);
} catch (Exception e) {
camelContext.stop();
context.close();
e.printStackTrace();
}
}
}
================================================
FILE: bdp-collect/src/main/java/com/github/bdp/collect/processors/DateShiftProcessor.java
================================================
package com.github.bdp.collect.processors;
import org.apache.camel.Exchange;
import org.apache.camel.Message;
import org.apache.camel.Processor;
import org.joda.time.DateTime;
import java.util.Date;
public class DateShiftProcessor implements Processor {
@Override
public void process(Exchange exchange) throws Exception {
Message message = exchange.getIn();
Integer offset = message.getHeader("offset", Integer.class);
Date firedTime = message.getHeader("firedTime", Date.class);
DateTime dateTime = new DateTime(firedTime);
DateTime shiftedTime = dateTime.minusSeconds(offset);
message.setHeader("shiftedTime", shiftedTime.toDate());
}
}
================================================
FILE: bdp-collect/src/main/profiles/cluster.properties
================================================
# app specific configs
app.name=${project.artifactId}
app.host=gateway1.cluster
app.home=${app.user.home}/${project.build.finalName}
app.user.name=${project.artifactId}
app.user.password=Bdpp1234!
app.user.home=/home/${app.user.name}
app.mainClass=com.github.bdp.collect.Main
app.log.home=${app.home}/log
app.log.level=INFO
# bdp_metric jdbc configs
bdp.metric.db.host=loadbalancer1.cluster
bdp.metric.jdbc.driverClassName=com.mysql.jdbc.Driver
bdp.metric.jdbc.url=jdbc:mysql://${bdp.metric.db.host}/bdp_metric?useSSL=false&createDatabaseIfNotExist=true&useUnicode=true&characterEncoding=utf-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT
bdp.metric.jdbc.username=bdp_metric
bdp.metric.jdbc.password=Bdpp1234!
# kafka configs
# Be careful the hostname of broker, you can check it on broker server via CLI: "netstat -ntlp|grep 9092"
kafka.brokers=worker1.cluster:9092,worker2.cluster:9092,worker3.cluster:9092
================================================
FILE: bdp-collect/src/main/profiles/standalone.properties
================================================
# app specific configs
app.name=${project.artifactId}
app.host=node1.cluster
app.home=${app.user.home}/${project.build.finalName}
app.user.name=${project.artifactId}
app.user.password=Bdpp1234!
app.user.home=/home/${app.user.name}
app.mainClass=com.github.bdp.collect.Main
app.log.home=${app.home}/log
app.log.level=INFO
# bdp_metric jdbc configs
bdp.metric.db.host=node1.cluster:3306
bdp.metric.jdbc.driverClassName=com.mysql.jdbc.Driver
bdp.metric.jdbc.url=jdbc:mysql://${bdp.metric.db.host}/bdp_metric?useSSL=false&createDatabaseIfNotExist=true&useUnicode=true&characterEncoding=utf-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT
bdp.metric.jdbc.username=bdp_metric
bdp.metric.jdbc.password=Bdpp1234!
# kafka configs
# Be careful the hostname of broker, you can check it on broker server via CLI: "netstat -ntlp|grep 9092"
kafka.brokers=node1.cluster:9092
================================================
FILE: bdp-collect/src/main/resources/bin/bdp-collect.sh
================================================
#!/usr/bin/env bash
export BDP_COLLECT_HOME="$(cd "`dirname $(readlink -nf "$0")`"/..; pwd -P)"
BDP_COLLECT_LIB_DIR=${BDP_COLLECT_HOME}/lib
BDP_COLLECT_CONF_DIR=${BDP_COLLECT_HOME}/conf
BDP_COLLECT_PID=/tmp/${project.artifactId}.pid
BDP_COLLECT_MAIN_CLASS="${app.mainClass}"
# ------------------------------------------------ Common Methods ------------------------------------------------ #
showUsage() {
printHeading "BDP-COLLECT USAGE"
echo "# 启动程序"
echo "$0 start"
echo
echo "# 终止程序"
echo "$0 stop"
echo
echo "# 重新启动程序(先终止先启动)"
echo "$0 restart"
echo
echo "# 监控日志输出"
echo "$0 tail-log"
echo
echo "# 重新启动程序并持续监控日志输出"
echo "$0 restart-with-logging"
echo
}
printHeading() {
title="$1"
paddingWidth=$((($(tput cols)-${#title})/2-3))
printf "\n%${paddingWidth}s"|tr ' ' '='
printf " [ $title ] "
printf "%${paddingWidth}s\n\n"|tr ' ' '='
}
getJavaCmd() {
if [[ -n "$JAVA_HOME" ]] && [[ -x "$JAVA_HOME/bin/java" ]]; then
echo "$JAVA_HOME/bin/java"
else
echo "java"
fi
}
# ------------------------------------------------ Major Methods ------------------------------------------------ #
start() {
java=$(getJavaCmd)
nohup $java -Duser.timezone=Asia/Shanghai -classpath "$BDP_COLLECT_CONF_DIR:$BDP_COLLECT_LIB_DIR/*" $BDP_COLLECT_MAIN_CLASS >/dev/null 2>&1 &
echo $! > $BDP_COLLECT_PID
}
stop() {
if [ -f $BDP_COLLECT_PID ]; then
# kill -0 == see if the PID exists
if kill -0 `cat $BDP_COLLECT_PID` > /dev/null 2>&1; then
kill -9 `cat $BDP_COLLECT_PID` > /dev/null 2>&1
fi
fi
}
restart() {
stop
start
}
tailLog() {
tail -F ${app.log.home}/${project.artifactId}.log
}
# ----------------------------------------------- Shell Scripts Entry -------------------------------------------- #
case $1 in
(start)
start
;;
(stop)
stop
;;
(restart)
restart
;;
(tail-log)
tailLog
;;
(restart-with-logging)
restart
tailLog
;;
(help)
showUsage
;;
(*)
showUsage
;;
esac
================================================
FILE: bdp-collect/src/main/resources/conf/bdp-collect.properties
================================================
job.cpu.sql=select id, name, hostname as hostname, value, UNIX_TIMESTAMP(timestamp) as timestamp from metric where name='cpu.usage' and `timestamp` > date_add(:#timestamp, interval -5 second) and `timestamp` <= :#timestamp?parametersCount=2
job.cpu.period=5s
job.mem.sql=select id, name, hostname, value, UNIX_TIMESTAMP(timestamp) as timestamp from metric where name='mem.used' and `timestamp` > date_add(:#timestamp, interval -5 second) and `timestamp` <= :#timestamp?parametersCount=2
job.mem.wave1.period=5s
job.mem.wave2.offset=60
job.mem.wave2.period=5s
job.alert.sql=select id, message, hostname, status, UNIX_TIMESTAMP(timestamp) as timestamp from alert where created_time > date_add(:#timestamp, interval -5 second) and created_time <= :#timestamp?parametersCount=2
job.alert.period=5s
#kafka brokers and topics configuration
kafka.brokers=${kafka.brokers}
kafka.topic.cpuUsage=cpu.usage
kafka.topic.memUsed=mem.used
kafka.topic.alert=alert
##add for new model
kafka.prefix.cpu.usage=cu
kafka.prefix.mem.used=mu
kafka.prefix.alert=al
================================================
FILE: bdp-collect/src/main/resources/conf/camel-context.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd">
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:bdp-collect.properties</value>
</list>
</property>
</bean>
<bean id="hikariConfig" class="com.zaxxer.hikari.HikariConfig">
<property name="driverClassName" value="${bdp.metric.jdbc.driverClassName}"/>
<property name="jdbcUrl" value="${bdp.metric.jdbc.url}"/>
<property name="username" value="${bdp.metric.jdbc.username}"/>
<property name="password" value="${bdp.metric.jdbc.password}"/>
</bean>
<bean id="dataSource" class="com.zaxxer.hikari.HikariDataSource" destroy-method="close">
<constructor-arg ref="hikariConfig" />
</bean>
<bean id="sql" class="org.apache.camel.component.sql.SqlComponent">
<property name="dataSource" ref="dataSource"/>
</bean>
<bean id="kafka" class="org.apache.camel.component.kafka.KafkaComponent">
<property name="brokers" value="${kafka.brokers}"/>
<!--<property name="keySerializerClass" value="class org.apache.kafka.common.serialization.ByteArrayDeserializer"/>-->
</bean>
<bean id="dateFormatter" class="java.text.SimpleDateFormat">
<constructor-arg name="pattern" value="yyyy-MM-dd HH:mm:ss"/>
</bean>
<bean id="dateShiftProcessor" class="com.github.bdp.collect.processors.DateShiftProcessor"/>
<bean id="memWave1DateParamQueue" class="java.util.concurrent.LinkedBlockingQueue" destroy-method="clear"/>
<bean id="memWave2DateParamQueue" class="java.util.concurrent.LinkedBlockingQueue" destroy-method="clear"/>
<bean id="alertDateParamQueue" class="java.util.concurrent.LinkedBlockingQueue" destroy-method="clear"/>
<camelContext xmlns="http://camel.apache.org/schema/spring">
<propertyPlaceholder id="placeholder" location="classpath:bdp-collect.properties"/>
<!-- normal case: cpu usage metrics collecting -->
<route id="cpuCollectingJob">
<from uri="timer:cpuCollectingTimer?period={{job.cpu.period}}"/>
<to uri="bean:dateFormatter?method=format(${header.firedTime})"/>
<log message="Job Name: cpuCollectingJob, Start Time: ${in.body}"/>
<setHeader headerName="timestamp">
<simple>${in.body}</simple>
</setHeader>
<to uri="sql:{{job.cpu.sql}}"/>
<log message="SQL Returned Results: ${in.body}"/>
<split>
<simple>${in.body}</simple>
<log message="Split Message: ${in.body}"/>
<marshal>
<json library="Jackson"/>
</marshal>
<setHeader headerName="kafka.KEY">
<simple>{{kafka.prefix.cpu.usage}}|${random(100)}</simple>
</setHeader>
<to uri="kafka:{{kafka.topic.cpuUsage}}"/>
</split>
</route>
<!-- query daley case: alert collecting -->
<route id="alertSchedulingJob">
<from uri="timer:alertSchedulingTimer?period={{job.alert.period}}&delay=6s"/>
<to uri="bean:dateFormatter?method=format(${header.firedTime})"/>
<log message="Job Name: alertSchedulingJob, Scheduled Time: ${in.body}"/>
<to uri="bean:alertDateParamQueue?method=put(${in.body})"/>
</route>
<route id="alertExecutingJob">
<from uri="timer:alertExecutingTimer?delay=-1"/>
<to uri="bean:alertDateParamQueue?method=take()"/>
<log message="Job Name: alertExecutingJob, Executing Time: ${in.body}"/>
<setHeader headerName="timestamp">
<simple>${in.body}</simple>
</setHeader>
<!-- delay for a while to simulate sql executing elapsed time -->
<delay>
<simple>${random(10000)}</simple>
</delay>
<to uri="sql:{{job.alert.sql}}"/>
<split>
<simple>${body}</simple>
<marshal>
<json library="Jackson"/>
</marshal>
<setHeader headerName="kafka.KEY">
<simple>{{kafka.prefix.alert}}|${random(100)}</simple>
</setHeader>
<to uri="kafka:{{kafka.topic.alert}}"/>
</split>
</route>
<!-- data landing daley case: mem free metrics collecting -->
<route id="memWave1SchedulingJob">
<from uri="timer:memWave1SchedulingTimer?period={{job.mem.wave1.period}}&delay=2s"/>
<to uri="bean:dateFormatter?method=format(${header.firedTime})"/>
<log message="Job Name: memWave1SchedulingJob, Scheduled Time: ${in.body}"/>
<to uri="bean:memWave1DateParamQueue?method=put(${in.body})"/>
</route>
<route id="memWave1ExecutingJob">
<from uri="timer:memExecutingTimer?delay=-1"/>
<to uri="bean:memWave1DateParamQueue?method=take()"/>
<log message="Job Name: memWave1ExecutingJob, Executing Time: ${in.body}"/>
<setHeader headerName="timestamp">
<simple>${in.body}</simple>
</setHeader>
<to uri="sql:{{job.mem.sql}}"/>
<split>
<simple>${body}</simple>
<marshal>
<json library="Jackson"/>
</marshal>
<setHeader headerName="kafka.KEY">
<simple>{{kafka.prefix.mem.used}}|${random(100)}</simple>
</setHeader>
<to uri="kafka:{{kafka.topic.memUsed}}"/>
</split>
</route>
<route id="memWave2SchedulingJob">
<from uri="timer:memWave2SchedulingTimer?period={{job.mem.wave2.period}}&delay=4s"/>
<setHeader headerName="offset">
<simple>{{job.mem.wave2.offset}}</simple>
</setHeader>
<process ref="dateShiftProcessor"/>
<to uri="bean:dateFormatter?method=format(${header.shiftedTime})"/>
<log message="Job Name: memWave2ScheduleJob, Scheduled Time: ${in.body}"/>
<to uri="bean:memWave2DateParamQueue?method=put(${in.body})"/>
</route>
<route id="memWave2ExecutingJob">
<from uri="timer:memExecutingTimer?delay=-1"/>
<to uri="bean:memWave2DateParamQueue?method=take()"/>
<log message="Job Name: memWave2ExecutingJob, Executing Time: ${in.body}"/>
<setHeader headerName="timestamp">
<simple>${in.body}</simple>
</setHeader>
<to uri="sql:{{job.mem.sql}}"/>
<split>
<simple>${body}</simple>
<marshal>
<json library="Jackson"/>
</marshal>
<setHeader headerName="kafka.KEY">
<simple>{{kafka.prefix.mem.used}}|${random(100)}</simple>
</setHeader>
<to uri="kafka:{{kafka.topic.memUsed}}"/>
</split>
</route>
</camelContext>
</beans>
================================================
FILE: bdp-collect/src/main/resources/conf/log4j.properties
================================================
# Root logger options
log4j.rootLogger=INFO, ROLLING_BY_SIZE
# App root logger options
log4j.logger.com.github.bdp = ${app.log.level}, ROLLING_BY_SIZE, ERROR_ROLLING_BY_SIZE
# Console appender
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=[%d{yyyy-MM-dd HH:mm:ss}] [%p] [%t] [%c{1}.%M(%L)] -- %m%n
# Rolling file by size appender for bdp-metric
log4j.appender.ROLLING_BY_SIZE=org.apache.log4j.RollingFileAppender
log4j.appender.ROLLING_BY_SIZE.MaxFileSize=64MB
log4j.appender.ROLLING_BY_SIZE.MaxBackupIndex=16
log4j.appender.ROLLING_BY_SIZE.File=${app.log.home}/${project.artifactId}.log
log4j.appender.ROLLING_BY_SIZE.layout=org.apache.log4j.PatternLayout
log4j.appender.ROLLING_BY_SIZE.layout.ConversionPattern=[%d{yyyy-MM-dd HH:mm:ss}] [%p] [%t] [%c{1}.%M(%L)] -- %m%n
# Rolling file by size appender for bdp-metric warns & errors
log4j.appender.ERROR_ROLLING_BY_SIZE=org.apache.log4j.RollingFileAppender
log4j.appender.ERROR_ROLLING_BY_SIZE.Threshold = WARN
log4j.appender.ERROR_ROLLING_BY_SIZE.MaxFileSize=64MB
log4j.appender.ERROR_ROLLING_BY_SIZE.MaxBackupIndex=16
log4j.appender.ERROR_ROLLING_BY_SIZE.File=${app.log.home}/${project.artifactId}.error.log
log4j.appender.ERROR_ROLLING_BY_SIZE.layout=org.apache.log4j.PatternLayout
log4j.appender.ERROR_ROLLING_BY_SIZE.layout.ConversionPattern=[%d{yyyy-MM-dd HH:mm:ss}] [%p] [%t] [%c{1}.%M(%L)] -- %m%n
# -------------------------------------------- Not Used Yet ------------------------------------------------------------
# Rolling file by time appender for bdp-metric
# Warning: If you enable the following appender it will fill up your disk if you don't have a cleanup lib!
# This uses the updated rolling file appender from log4j-extras that supports a reliable time-based rolling policy.
# See http://logging.apache.org/log4j/companions/extras/apidocs/org/apache/log4j/rolling/TimeBasedRollingPolicy.html
# Add "ROLLING_BY_TIME" to flume.root.logger above if you want to use this
log4j.appender.ROLLING_BY_TIME=org.apache.log4j.rolling.RollingFileAppender
log4j.appender.ROLLING_BY_TIME.rollingPolicy=org.apache.log4j.rolling.TimeBasedRollingPolicy
log4j.appender.ROLLING_BY_TIME.rollingPolicy.ActiveFileName=${app.log.home}/${project.artifactId}.log
log4j.appender.ROLLING_BY_TIME.rollingPolicy.FileNamePattern=${app.log.home}/${project.artifactId}.log.%d{yyyyMMdd}
log4j.appender.ROLLING_BY_TIME.layout=org.apache.log4j.PatternLayout
log4j.appender.ROLLING_BY_TIME.layout.ConversionPattern=[%d{yyyy-MM-dd HH:mm:ss}] [%p] [%t] [%c{1}.%M(%L)] ── %m%n
================================================
FILE: bdp-collect/src/main/resources/deploy.bat
================================================
@echo off
set host=${app.host}
set user=${app.user.name}
set password=${app.user.password}
set baseDir=${app.user.home}
set home=${app.home}
set buildDir=${project.build.directory}
set binZip=${project.build.finalName}-bin.zip
set deltaBinZip=${project.build.finalName}-bin-delta.zip
set logHome=${app.log.home}
echo.
echo ***************************************************************************************
echo UPLOAD...
echo ***************************************************************************************
if "%~1"=="-delta" (
goto uploadDeltaBinZip
) else (
goto uploadBinZip
)
:uploadBinZip
@echo on
PSCP -l %user% -pw %password% "%buildDir%\\%binZip%" "%host%:/tmp/"
PLINK -l %user% -pw %password% %host% -t "if [ ! -d '%baseDir%' ];then mkdir %baseDir%;fi"
PLINK -l %user% -pw %password% %host% -t "if [ -d '%home%' ];then rm -rf %home%;fi"
PLINK -l %user% -pw %password% %host% -t "unzip /tmp/%binZip% -d %baseDir%/"
PLINK -l %user% -pw %password% %host% -t "mkdir %logHome%/"
@echo off
goto startup
:uploadDeltaBinZip
@echo on
PSCP -l %user% -pw %password% "%buildDir%\\%deltaBinZip%" "%host%:/tmp/"
PLINK -l %user% -pw %password% %host% -t "unzip -o /tmp/%deltaBinZip% -d %baseDir%/"
@echo off
goto startup
:startup
echo.
echo ***************************************************************************************
echo STARTUP...
echo ***************************************************************************************
@echo on
:: if you want to start program automatically after deploy, uncomment next line.
:: PLINK -l %user% -pw %password% %host% -t "%baseDir%/${project.build.finalName}/bin/${project.artifactId}.sh restart-with-logging"
@echo off
================================================
FILE: bdp-dwh/.gitignore
================================================
.idea
/*.iml
target
================================================
FILE: bdp-dwh/README.md
================================================
关于本子项目的部署、运行与代码细节,请参考《大数据平台架构与原型实现:数据中台建设实战》一书第8章以及第4章4.5节
友情提示:如果该项目提交后迟迟进入不到运行状态,请确认你的集群资源是否充足,同时可以考虑将profile文件中spark.num.executors与spark.executor.cores两个参数的数值调低。
如无必要,不建议同时启动bdp-stream和bdp-dwh的作业,以免因为资源不足导致作业pending,如果确实需要同时运行,在确保资源充足的前提下,可以通过Yarn的动态资源池为bdp-stream和bdp-dwh两个用户分配隔离资源。
在真实的生产环境中,流计算项目一般不于批处理项目在同一集群上运行。
================================================
FILE: bdp-dwh/build.bat
================================================
@echo off
rem A batch script to build -> deploy -> restart
rem -- Laurence Geng
if [%1]==[] (
echo.
echo Usage: %0 maven-profile-1 maven-profile-2 ...
echo.
goto end
)
set profiles=%~1
:loopProfiles
shift
if "%~1"=="" (
goto build
) else (
set profiles=%profiles%,%~1
goto loopProfiles
)
:build
echo.
echo ***************************************************************************************
echo BUILD...
echo ***************************************************************************************
echo.
if "%profiles%"=="" (
call mvn clean install -DskipTests=true
) else (
call mvn clean install -DskipTests=true -P%profiles%
)
if "%errorlevel%"=="1" goto :releasefailed
call target\classes\deploy.bat
if "%errorlevel%"=="1" goto :releasefailed
goto releasesuccess
:releasesuccess
echo.
echo.
echo ***************************************************************************************
echo RELEASE SUCCESS!!
echo ***************************************************************************************
goto end
:releasefailed
echo.
echo.
echo ***************************************************************************************
echo RELEASE FAILED!!
echo ***************************************************************************************
goto end
:end
================================================
FILE: bdp-dwh/pom.xml
================================================
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.github</groupId>
<artifactId>bdp-dwh</artifactId>
<version>1.0</version>
<name>bdp-dwh</name>
<parent>
<groupId>com.github</groupId>
<artifactId>bdp-parent</artifactId>
<version>1.0</version>
<relativePath>../bdp-parent/pom.xml</relativePath>
</parent>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>${resources.version}</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>${compiler.version}</version>
<configuration>
<source>${jdk.version}</source>
<target>${jdk.version}</target>
<showDeprecation>true</showDeprecation>
<showWarnings>true</showWarnings>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<excludes>
<exclude>lib/</exclude>
<exclude>bin/</exclude>
<exclude>*.bat</exclude>
</excludes>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>${surefire.version}</version>
<!-- disable test when building. tests will run by external testng cmd!-->
<configuration>
<skip>true</skip>
</configuration>
</plugin>
<plugin>
<groupId>net.alchim31.maven</groupId>
<artifactId>scala-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>compile</goal>
<goal>testCompile</goal>
</goals>
<configuration>
<scalaVersion>${scala.version}</scalaVersion>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>${assembly.version}</version>
<inherited>false</inherited>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
<configuration>
<descriptors>
<descriptor>src/main/assembly/bin.xml</descriptor>
</descriptors>
</configuration>
</plugin>
</plugins>
<filters>
<filter>src/main/profiles/${profile.id}.properties</filter>
</filters>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
<sourceDirectory>src/main/scala</sourceDirectory>
</build>
<dependencies>
<dependency>
<groupId>org.apache.hive</groupId>
<artifactId>hive-exec</artifactId>
<scope>provided</scope>
</dependency>
</dependencies>
<profiles>
<profile>
<id>standalone</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<profile.id>standalone</profile.id>
</properties>
</profile>
<profile>
<id>cluster</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<profile.id>cluster</profile.id>
</properties>
</profile>
</profiles>
</project>
================================================
FILE: bdp-dwh/src/main/assembly/bin.xml
================================================
<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">
<id>bin</id>
<formats>
<format>zip</format>
</formats>
<includeBaseDirectory>true</includeBaseDirectory>
<fileSets>
<fileSet>
<directory>target/classes</directory>
<outputDirectory>.</outputDirectory>
<includes>
<include>**/*.sh</include>
</includes>
<fileMode>755</fileMode>
</fileSet>
<fileSet>
<directory>target/classes</directory>
<outputDirectory>.</outputDirectory>
<includes>
<include>**/*.sql</include>
<include>**/*.csv</include>
</includes>
</fileSet>
<fileSet>
<directory>target</directory>
<outputDirectory>./jar</outputDirectory>
<includes>
<include>*.jar</include>
</includes>
</fileSet>
</fileSets>
</assembly>
================================================
FILE: bdp-dwh/src/main/profiles/cluster.properties
================================================
# app specific configs
cluster.hiverserver=gateway1.cluster
app.name=${project.artifactId}
app.host=gateway1.cluster
app.home=${app.user.home}/${project.build.finalName}
app.user.name=${project.artifactId}
app.user.password=Bdpp1234!
app.user.home=/home/${app.user.name}
app.hdfs.user.name=bdp-dwh
app.hdfs.user.home=hdfs:///user/${app.hdfs.user.name}
# spark configs
spark.num.executors=3
spark.executor.cores=3
spark.executor.memory=1024m
# bdp_metric jdbc configs
# 此处的数据库主机不要使用balancer1.cluster, 因为运行MR作业的节点是3个worker节点,也就是在均衡中配置的三个节点
# 而阿里云的四层负载均衡服务不支持负载均衡后端ECS实例作为客户端直接访问负载均衡,所以如果使用balancer1.cluster作为地址会经常连接数据库失败
bdp.metric.db.host=master1.cluster
bdp.metric.jdbc.url=jdbc:mysql://${bdp.metric.db.host}/bdp_metric?useSSL=false&useUnicode=true&characterEncoding=utf-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT
bdp.metric.jdbc.user=bdp_metric
bdp.metric.jdbc.password=Bdpp1234!
# bdp_master jdbc configs
# 此处的数据库主机不要使用balancer1.cluster, 因为运行MR作业的节点是3个worker节点,也就是在均衡中配置的三个节点
# 而阿里云的四层负载均衡服务不支持负载均衡后端ECS实例作为客户端直接访问负载均衡,所以如果使用balancer1.cluster作为地址会经常连接数据库失败
bdp.master.db.host=master1.cluster
bdp.master.jdbc.url=jdbc:mysql://${bdp.master.db.host}/bdp_master?useSSL=false&useUnicode=true&characterEncoding=utf-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT
bdp.master.jdbc.user=bdp_master
bdp.master.jdbc.password=Bdpp1234!
================================================
FILE: bdp-dwh/src/main/profiles/standalone.properties
================================================
# app specific configs
cluster.hiverserver=node1.cluster
app.name=${project.artifactId}
app.host=node1.cluster
app.home=${app.user.home}/${project.build.finalName}
app.user.name=${project.artifactId}
app.user.password=Bdpp1234!
app.user.home=/home/${app.user.name}
app.hdfs.user.name=bdp-dwh
app.hdfs.user.home=hdfs:///user/${app.hdfs.user.name}
# spark configs
spark.num.executors=1
spark.executor.cores=2
spark.executor.memory=1024m
# bdp_metric jdbc configs
bdp.metric.db.host=node1.cluster:3306
bdp.metric.jdbc.url=jdbc:mysql://${bdp.metric.db.host}/bdp_metric?useSSL=false&useUnicode=true&characterEncoding=utf-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT
bdp.metric.jdbc.user=bdp_metric
bdp.metric.jdbc.password=Bdpp1234!
# bdp_master jdbc configs
bdp.master.db.host=node1.cluster:3306
bdp.master.jdbc.url=jdbc:mysql://${bdp.master.db.host}/bdp_master?useSSL=false&useUnicode=true&characterEncoding=utf-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT
bdp.master.jdbc.user=bdp_master
bdp.master.jdbc.password=Bdpp1234!
================================================
FILE: bdp-dwh/src/main/resources/bin/bdp-dwh.sh
================================================
#!/usr/bin/env bash
export BDP_DWH_HOME="$(cd "`dirname $(readlink -nf "$0")`"/..; pwd -P)"
source "$BDP_DWH_HOME/bin/util.sh"
# ------------------------------------------------ Common Methods ------------------------------------------------ #
showUsage()
{
showLocalUsage
$BDP_DWH_HOME/bin/src-bdp-master.sh help
$BDP_DWH_HOME/bin/dwh-bdp-master.sh help
$BDP_DWH_HOME/bin/dmt-master-data.sh help
$BDP_DWH_HOME/bin/src-bdp-metric.sh help
$BDP_DWH_HOME/bin/dwh-bdp-metric.sh help
$BDP_DWH_HOME/bin/dmt-infra-metric.sh help
}
showLocalUsage()
{
printHeading "PROJECT [ BDP-DWH ] USAGE"
echo "# 说明:创建所有表的schema"
echo "$0 create-all"
echo
echo "# 说明:从数据源导入指定时间范围内的所有数据,执行数仓各个分层上的所有操作"
echo "$0 build-all START_TIME END_TIME"
echo
echo "# 示例:从数据源导入2018-09-01的所有数据,执行数仓各个分层上的所有操作"
echo "$0 build-all '2018-09-01T00:00+0800' '2018-09-02T00:00+0800'"
echo
echo "# 说明:显示数据库中的所有数据表(限定10条)"
echo "$0 show-data"
echo
echo "# 说明:清空数据库中的所有数据表"
echo "$0 truncate-all"
echo
echo "# 说明:使用应用配置开启spark-sql控制台"
echo "$0 spark-sql"
echo
echo "# 说明:创建_在数仓各层上对应表的schema"
echo "$0 create-hour"
echo
echo "# 说明:从TMP到DMT逐层构建hour对应表的数据"
echo "$0 build-hour"
echo
echo "# 说明:创建app在数仓各层上对应表的schema"
echo "$0 create-app"
echo
echo "# 说明:按指定的日期范围,从TMP到DMT逐层构建app对应表的数据"
echo "$0 build-app START_TIME END_TIME"
echo
echo "# 示例:构建2018-09-01这一天从TMP到DMT各层app数据"
echo "$0 build-app '2018-09-01T00:00+0800' '2018-09-02T00:00+0800'"
echo
echo "# 说明:创建server在数仓各层上对应表的schema"
echo "$0 create-server"
echo
echo "# 说明:按指定的日期范围,从TMP到DMT逐层构建server对应表的数据"
echo "$0 build-server START_TIME END_TIME"
echo
echo "# 示例:构建2018-09-01这一天从TMP到DMT各层server数据"
echo "$0 build-server '2018-09-01T00:00+0800' '2018-09-02T00:00+0800'"
echo
echo "# 说明:创建metric_index在数仓各层上对应表的schema"
echo "$0 create-metric-index"
echo
echo "# 说明:按指定的日期范围,从TMP到DMT逐层构建metric_index对应表的数据"
echo "$0 build-metric-index START_TIME END_TIME"
echo
echo "# 示例:构建2018-09-01这一天从TMP到DMT各层metric_index数据"
echo "$0 build-metric-index '2018-09-01T00:00+0800' '2018-09-02T00:00+0800'"
echo
echo "# 说明:创建metric_threshold在数仓各层上对应表的schema"
echo "$0 create-metric-threshold"
echo
echo "# 说明:按指定的日期范围,从TMP到DMT逐层构建metric_threshold对应表的数据"
echo "$0 build-metric-threshold START_TIME END_TIME"
echo
echo "# 示例:构建2018-09-01这一天从TMP到DMT各层metric_threshold数据"
echo "$0 build-metric-threshold '2018-09-01T00:00+0800' '2018-09-02T00:00+0800'"
echo
echo "# 说明:创建metric在数仓各层上对应表的schema"
echo "$0 create-metric"
echo
echo "# 说明:按指定的日期范围,从TMP到DMT逐层构建metric对应表的数据"
echo "$0 build-metric START_TIME END_TIME"
echo
echo "# 示例:构建2018-09-01这一天从TMP到DMT各层metric数据"
echo "$0 build-metric '2018-09-01T00:00+0800' '2018-09-02T00:00+0800'"
echo
}
# ------------------------------------------------ Major Methods ------------------------------------------------ #
initAll()
{
createAll
buildAll "$@"
}
createAll()
{
createHour
createApp
createServer
createMetricIndex
createMetricThreshold
createMetric
}
buildAll()
{
buildHour
buildApp "$@"
buildServer "$@"
buildMetricIndex "$@"
buildMetricThreshold "$@"
buildMetric "$@"
}
createHour()
{
$BDP_DWH_HOME/bin/dmt-master-data.sh create-hour
}
buildHour()
{
$BDP_DWH_HOME/bin/dmt-master-data.sh build-hour
}
createApp()
{
$BDP_DWH_HOME/bin/src-bdp-master.sh create-app
$BDP_DWH_HOME/bin/dwh-bdp-master.sh create-app
$BDP_DWH_HOME/bin/dmt-master-data.sh create-app
}
buildApp()
{
$BDP_DWH_HOME/bin/src-bdp-master.sh build-app "$@"
$BDP_DWH_HOME/bin/dwh-bdp-master.sh build-app "$@"
$BDP_DWH_HOME/bin/dmt-master-data.sh build-app "$@"
}
createServer()
{
$BDP_DWH_HOME/bin/src-bdp-master.sh create-server
$BDP_DWH_HOME/bin/dwh-bdp-master.sh create-server
$BDP_DWH_HOME/bin/dmt-master-data.sh create-server
}
buildServer()
{
$BDP_DWH_HOME/bin/src-bdp-master.sh build-server "$@"
$BDP_DWH_HOME/bin/dwh-bdp-master.sh build-server "$@"
$BDP_DWH_HOME/bin/dmt-master-data.sh build-server "$@"
}
createMetricIndex()
{
$BDP_DWH_HOME/bin/src-bdp-master.sh create-metric-index
$BDP_DWH_HOME/bin/dwh-bdp-master.sh create-metric-index
$BDP_DWH_HOME/bin/dmt-master-data.sh create-metric-index
}
buildMetricIndex()
{
$BDP_DWH_HOME/bin/src-bdp-master.sh build-metric-index "$@"
$BDP_DWH_HOME/bin/dwh-bdp-master.sh build-metric-index "$@"
$BDP_DWH_HOME/bin/dmt-master-data.sh build-metric-index "$@"
}
createMetricThreshold()
{
$BDP_DWH_HOME/bin/src-bdp-master.sh create-metric-threshold
$BDP_DWH_HOME/bin/dwh-bdp-master.sh create-metric-threshold
$BDP_DWH_HOME/bin/dmt-master-data.sh create-metric-threshold
}
buildMetricThreshold()
{
$BDP_DWH_HOME/bin/src-bdp-master.sh build-metric-threshold "$@"
$BDP_DWH_HOME/bin/dwh-bdp-master.sh build-metric-threshold "$@"
$BDP_DWH_HOME/bin/dmt-master-data.sh build-metric-threshold "$@"
}
createMetric()
{
$BDP_DWH_HOME/bin/src-bdp-metric.sh create-metric
$BDP_DWH_HOME/bin/dwh-bdp-metric.sh create-metric
$BDP_DWH_HOME/bin/dmt-infra-metric.sh create-fact-metric
$BDP_DWH_HOME/bin/dmt-infra-metric.sh create-sum-metric-avg
$BDP_DWH_HOME/bin/dmt-infra-metric.sh create-wide-metric-avg
}
buildMetric()
{
$BDP_DWH_HOME/bin/src-bdp-metric.sh build-metric "$@"
$BDP_DWH_HOME/bin/dwh-bdp-metric.sh build-metric "$@"
$BDP_DWH_HOME/bin/dmt-infra-metric.sh build-fact-metric "$@"
$BDP_DWH_HOME/bin/dmt-infra-metric.sh build-sum-metric-avg "$@"
$BDP_DWH_HOME/bin/dmt-infra-metric.sh build-wide-metric-avg "$@"
}
truncateAll()
{
beeline --color=true --truncateTable=true -u=jdbc:hive2://${cluster.hiverserver}:10000 -n ${app.user.name} -e "\
truncate table src.bdp_metric_metric;
truncate table src.bdp_master_app;
truncate table src.bdp_master_server;
truncate table src.bdp_master_metric_index;
truncate table src.bdp_master_metric_threshold;
truncate table dwh.bdp_metric_metric;
truncate table dwh.bdp_master_app;
truncate table dwh.bdp_master_server;
truncate table dwh.bdp_master_metric_index;
truncate table dwh.bdp_master_metric_threshold;
truncate table dmt.dim_app;
truncate table dmt.dim_server;
truncate table dmt.dim_metric_index;
truncate table dmt.dim_metric_threshold;
truncate table dmt.fact_metric;
truncate table dmt.sum_metric_avg;
truncate table dmt.wide_metric_avg;"
}
showData()
{
beeline --color=true --truncateTable=true -u=jdbc:hive2://${cluster.hiverserver}:10000 -n ${app.user.name} -e "\
select * from src.bdp_metric_metric limit 10;
select * from src.bdp_master_app;
select * from src.bdp_master_server;
select * from src.bdp_master_metric_index;
select * from src.bdp_master_metric_threshold;
select * from dwh.bdp_metric_metric limit 10;
select * from dwh.bdp_master_app;
select * from dwh.bdp_master_server;
select * from dwh.bdp_master_metric_index;
select * from dwh.bdp_master_metric_threshold;
select * from dmt.dim_app;
select * from dmt.dim_server;
select * from dmt.dim_metric_index;
select * from dmt.dim_metric_threshold;
select * from dmt.dim_hour limit 10;
select * from dmt.fact_metric limit 10;
select * from dmt.sum_metric_avg limit 10;
select * from dmt.wide_metric_avg limit 10;"
}
# ---------------------------------------------- Scripts Entrance ---------------------------------------------- #
case $1 in
(init-all)
createAll
shift
buildAll "$@"
;;
(create-all)
createAll
;;
(truncate-all)
truncateAll
;;
(build-all)
shift
buildAll "$@"
;;
(create-hour)
createHour
;;
(build-hour)
shift
buildHour
;;
(create-app)
createApp
;;
(build-app)
shift
buildApp "$@"
;;
(create-server)
createServer
;;
(build-server)
shift
buildServer "$@"
;;
(create-metric-index)
createMetricIndex
;;
(build-metric-index)
shift
buildMetricIndex "$@"
;;
(create-metric-threshold)
createMetricThreshold
;;
(build-metric-threshold)
shift
buildMetricThreshold "$@"
;;
(create-metric)
createMetric
;;
(build-metric)
shift
buildMetric "$@"
;;
(show-data)
showData
;;
(spark-sql)
sparkSql
;;
(help)
showUsage
;;
(*)
showUsage
;;
esac
================================================
FILE: bdp-dwh/src/main/resources/bin/dmt-infra-metric.sh
================================================
#!/usr/bin/env bash
export BDP_DWH_HOME="$(cd "`dirname $(readlink -nf "$0")`"/..; pwd -P)"
export DMT_INFRA_METRIC_HOME="$BDP_DWH_HOME/lib/dmt/infra-metric"
export SUBJECT="dmt :: infra-metric"
export UNDER_LAYER_SUBJECT="dwh :: bdp-metric"
source "$BDP_DWH_HOME/bin/util.sh"
source "$DMT_INFRA_METRIC_HOME/bin/spark-actions.sh"
# ------------------------------------------------ Common Methods ------------------------------------------------ #
showUsage()
{
printHeading "MODULE: [ $(echo "$SUBJECT" | tr 'a-z' 'A-Z') ] USAGE"
echo "# 说明:创建metric表的schema"
echo "$0 create-fact-metric"
echo
echo "# 说明:从dwh导入指定时间范围内的metric数据到dmt, 构建metric事实表"
echo "$0 build-fact-metric START_TIME END_TIME"
echo
echo "# 示例:从dwh导入2018-09-01的metric数据到dmt"
echo "$0 build-fact-metric '2018-09-01T00:00+0800' '2018-09-02T00:00+0800'"
echo
echo "# 说明:创建metric-avg表的schema"
echo "$0 create-sum-metric-avg"
echo
echo "# 说明:基于dmt上指定时间范围内的metric数据构建汇总数据metric-avg"
echo "$0 build-sum-metric-avg START_TIME END_TIME"
echo
echo "# 示例:基于2018-09-01的metric数据数据构建2018-09-01的汇总数据metric-avg"
echo "$0 build-sum-metric-avg '2018-09-01T00:00+0800' '2018-09-02T00:00+0800'"
echo
echo "# 说明:创建wide-metric-avg表的schema"
echo "$0 create-wide-metric-avg"
echo
echo "# 说明:基于dmt上指定时间范围内的metric数据构建宽表数据wide-metric-avg"
echo "$0 build-wide-metric-avg START_TIME END_TIME"
echo
echo "# 示例:基于2018-09-01的metric数据数据构建2018-09-01的宽表数据metric-avg"
echo "$0 build-wide-metric-avg '2018-09-01T00:00+0800' '2018-09-02T00:00+0800'"
echo
}
# ---------------------------------------------- Scripts Entrance ---------------------------------------------- #
case $1 in
(create-fact-metric)
createFactMetric
;;
(build-fact-metric)
shift
buildFactMetric "$@"
;;
(create-sum-metric-avg)
createSumMetricAvg
;;
(build-sum-metric-avg)
shift
buildSumMetricAvg "$@"
;;
(create-wide-metric-avg)
createWideMetricAvg
;;
(build-wide-metric-avg)
shift
buildWideMetricAvg "$@"
;;
(help)
showUsage
;;
(*)
showUsage
;;
esac
================================================
FILE: bdp-dwh/src/main/resources/bin/dmt-master-data.sh
================================================
#!/usr/bin/env bash
export BDP_DWH_HOME="$(cd "`dirname $(readlink -nf "$0")`"/..; pwd -P)"
export DMT_MASTER_DATA_HOME="$BDP_DWH_HOME/lib/dmt/master-data"
export SUBJECT="dmt :: master-data"
export UNDER_LAYER_SUBJECT="dwh :: bdp-master"
source "$BDP_DWH_HOME/bin/util.sh"
source "$DMT_MASTER_DATA_HOME/bin/spark-actions.sh"
# ------------------------------------------------ Common Methods ------------------------------------------------ #
showUsage()
{
printHeading "MODULE: [ $(echo "$SUBJECT" | tr 'a-z' 'A-Z') ] USAGE"
echo "# 说明:创建dim_hour表的schema"
echo "$0 create-dim-hour"
echo
echo "# 说明:将hour级别的时间维度数据导入到dmt"
echo "$0 build-dim-hour"
echo
echo "# 说明:创建app表的schema"
echo "$0 create-bdp-metric"
echo
echo "# 说明:从src导入指定时间范围内的app数据到dmt, 构建app的缓慢变化维度表"
echo "$0 build-bdp-metric START_TIME END_TIME"
echo
echo "# 示例:从src导入2018-09-01的app数据到dmt"
echo "$0 build-bdp-metric '2018-09-01T00:00+0800' '2018-09-02T00:00+0800'"
echo
echo "# 说明:创建server表的schema"
echo "$0 create-server"
echo
echo "# 说明:从src导入指定时间范围内的server数据到dmt, 构建server的缓慢变化维度表"
echo "$0 build-server START_TIME END_TIME"
echo
echo "# 示例:从src导入2018-09-01的server数据到dmt"
echo "$0 build-server '2018-09-01T00:00+0800' '2018-09-02T00:00+0800'"
echo
echo "# 说明:创建metric-index表的schema"
echo "$0 create-metric-index"
echo
echo "# 说明:从src导入指定时间范围内的metric-index数据到dmt, 构建metric-index的缓慢变化维度表"
echo "$0 build-metric-index START_TIME END_TIME"
echo
echo "# 示例:从src导入2018-09-01的metric-index数据到dmt"
echo "$0 build-metric-index '2018-09-01T00:00+0800' '2018-09-02T00:00+0800'"
echo
echo "# 说明:创建metric-threshold表的schema"
echo "$0 create-metric-threshold"
echo
echo "# 说明:从src导入指定时间范围内的metric-threshold数据到dmt, 构建metric-threshold的缓慢变化维度表"
echo "$0 build-metric-threshold START_TIME END_TIME"
echo
echo "# 示例:从src导入2018-09-01的metric-threshold数据到dmt"
echo "$0 build-metric-threshold '2018-09-01T00:00+0800' '2018-09-02T00:00+0800'"
echo
}
# ---------------------------------------------- Scripts Entrance ---------------------------------------------- #
case $1 in
(create-hour)
createHour
;;
(build-hour)
buildHour
;;
(create-app)
createApp
;;
(build-app)
shift
buildApp "$@"
;;
(create-server)
createServer
;;
(build-server)
shift
buildServer "$@"
;;
(create-metric-index)
createMetricIndex
;;
(build-metric-index)
shift
buildMetricIndex "$@"
;;
(create-metric-threshold)
createMetricThreshold
;;
(build-metric-threshold)
shift
buildMetricThreshold "$@"
;;
(help)
showUsage
;;
(*)
showUsage
;;
esac
================================================
FILE: bdp-dwh/src/main/resources/bin/dwh-bdp-master.sh
================================================
#!/usr/bin/env bash
export BDP_DWH_HOME="$(cd "`dirname $(readlink -nf "$0")`"/..; pwd -P)"
export DWH_BDP_MASTER_HOME="$BDP_DWH_HOME/lib/dwh/bdp-master"
export SUBJECT="dwh :: bdp-master"
export UNDER_LAYER_SUBJECT="src :: bdp-master"
source "$BDP_DWH_HOME/bin/util.sh"
source "$DWH_BDP_MASTER_HOME/bin/spark-actions.sh"
# ------------------------------------------------ Common Methods ------------------------------------------------ #
showUsage()
{
printHeading "MODULE: [ $(echo "$SUBJECT" | tr 'a-z' 'A-Z') ] USAGE"
echo "# 说明:创建app 表的schema"
echo "$0 create-app "
echo
echo "# 说明:从src导入指定时间范围内的app数据到dwh"
echo "$0 build-app START_TIME END_TIME"
echo
echo "# 示例:从src导入2018-09-01的app数据到dwh"
echo "$0 build-app '2018-09-01T00:00+0800' '2018-09-02T00:00+0800'"
echo
echo "# 说明:创建server表的schema"
echo "$0 create-server"
echo
echo "# 说明:从src导入指定时间范围内的server数据到dwh"
echo "$0 build-server START_TIME END_TIME"
echo
echo "# 示例:从src导入2018-09-01的server数据到dwh"
echo "$0 build-server '2018-09-01T00:00+0800' '2018-09-02T00:00+0800'"
echo
echo "# 说明:创建metric-index表的schema"
echo "$0 create-metric-index"
echo
echo "# 说明:从src导入指定时间范围内的metric-index数据到dwh"
echo "$0 build-metric-index START_TIME END_TIME"
echo
echo "# 示例:从src导入2018-09-01的metric-index数据到dwh"
echo "$0 build-metric-index '2018-09-01T00:00+0800' '2018-09-02T00:00+0800'"
echo
echo "# 说明:创建metric-threshold表的schema"
echo "$0 create-metric-threshold"
echo
echo "# 说明:从src导入指定时间范围内的metric-threshold数据到dwh"
echo "$0 build-metric-threshold START_TIME END_TIME"
echo
echo "# 示例:从src导入2018-09-01的metric-threshold数据到dwh"
echo "$0 build-metric-threshold '2018-09-01T00:00+0800' '2018-09-02T00:00+0800'"
echo
}
# ---------------------------------------------- Scripts Entrance ---------------------------------------------- #
case $1 in
(create-app)
createApp
;;
(build-app)
shift
buildApp "$@"
;;
(create-server)
createServer
;;
(build-server)
shift
buildServer "$@"
;;
(create-metric-index)
createMetricIndex
;;
(build-metric-index)
shift
buildMetricIndex "$@"
;;
(create-metric-threshold)
createMetricThreshold
;;
(build-metric-threshold)
shift
buildMetricThreshold "$@"
;;
(help)
showUsage
;;
(*)
showUsage
;;
esac
================================================
FILE: bdp-dwh/src/main/resources/bin/dwh-bdp-metric.sh
================================================
#!/usr/bin/env bash
export BDP_DWH_HOME="$(cd "`dirname $(readlink -nf "$0")`"/..; pwd -P)"
export DWH_BDP_METRIC_HOME="$BDP_DWH_HOME/lib/dwh/bdp-metric"
export SUBJECT="dwh :: bdp-metric"
export UNDER_LAYER_SUBJECT="src :: bdp-metric"
source "$BDP_DWH_HOME/bin/util.sh"
source "$DWH_BDP_METRIC_HOME/bin/spark-actions.sh"
# ------------------------------------------------ Common Methods ------------------------------------------------ #
showUsage()
{
printHeading "MODULE: [ $(echo "$SUBJECT" | tr 'a-z' 'A-Z') ] USAGE"
echo "# 说明:创建metric表的schema"
echo "$0 create-metric"
echo
echo "# 说明:从src导入指定时间范围内的metric数据到dwh"
echo "$0 build-metric START_TIME END_TIME"
echo
echo "# 示例:从src导入2018-09-01的metric数据到dwh"
echo "$0 build-metric '2018-09-01T00:00+0800' '2018-09-02T00:00+0800'"
echo
}
# ---------------------------------------------- Scripts Entrance ---------------------------------------------- #
case $1 in
(create-metric)
createMetric
;;
(build-metric)
shift
buildMetric "$@"
;;
(help)
showUsage
;;
(*)
showUsage
;;
esac
================================================
FILE: bdp-dwh/src/main/resources/bin/src-bdp-master.sh
================================================
#!/usr/bin/env bash
export BDP_DWH_HOME="$(cd "`dirname $(readlink -nf "$0")`"/..; pwd -P)"
export SRC_BDP_MASTER_HOME="$BDP_DWH_HOME/lib/src/bdp-master"
export SUBJECT="src :: bdp-master"
export UNDER_LAYER_SUBJECT="tmp :: bdp-master"
source "$BDP_DWH_HOME/bin/util.sh"
source "$SRC_BDP_MASTER_HOME/bin/sqoop-actions.sh"
source "$SRC_BDP_MASTER_HOME/bin/spark-actions.sh"
# ------------------------------------------------ Common Methods ------------------------------------------------ #
showUsage()
{
printHeading "MODULE: [ $(echo "$SUBJECT" | tr 'a-z' 'A-Z') ] USAGE"
echo "# 说明:创建app表的schema"
echo "$0 create-app"
echo
echo "# 说明:从数据源导入指定时间范围内的app数据到src"
echo "$0 build-app START_TIME END_TIME"
echo
echo "# 示例:从数据源导入2018-09-01的app数据到src"
echo "$0 build-app '2018-09-01T00:00+0800' '2018-09-02T00:00+0800'"
echo
echo "# 说明:创建server表的schema"
echo "$0 create-server"
echo
echo "# 说明:从数据源导入指定时间范围内的server数据到src"
echo "$0 build-server START_TIME END_TIME"
echo
echo "# 示例:从数据源导入2018-09-01的server数据到src"
echo "$0 build-server '2018-09-01T00:00+0800' '2018-09-02T00:00+0800'"
echo
echo "# 说明:创建metric-index表的schema"
echo "$0 create-metric-index"
echo
echo "# 说明:从数据源导入指定时间范围内的metric-index数据到src"
echo "$0 build-metric-index START_TIME END_TIME"
echo
echo "# 示例:从数据源导入2018-09-01的metric-index数据到src"
echo "$0 build-metric-index '2018-09-01T00:00+0800' '2018-09-02T00:00+0800'"
echo
echo "# 说明:创建metric-threshold表的schema"
echo "$0 create-metric-threshold"
echo
echo "# 说明:从数据源导入指定时间范围内的metric-threshold数据到src"
echo "$0 build-metric-threshold START_TIME END_TIME"
echo
echo "# 示例:从数据源导入2018-09-01的metric-threshold数据到src"
echo "$0 build-metric-threshold '2018-09-01T00:00+0800' '2018-09-02T00:00+0800'"
echo
}
# ---------------------------------------------- Scripts Entrance ---------------------------------------------- #
case $1 in
(create-app)
createAppToTmp
createApp
;;
(build-app)
shift
buildAppToTmp "$@"
buildApp "$@"
;;
(create-server)
createServerToTmp
createServer
;;
(build-server)
shift
buildServerToTmp "$@"
buildServer "$@"
;;
(create-metric-index)
createMetricIndexToTmp
createMetricIndex
;;
(build-metric-index)
shift
buildMetricIndexToTmp "$@"
buildMetricIndex "$@"
;;
(create-metric-threshold)
createMetricThresholdToTmp
createMetricThreshold
;;
(build-metric-threshold)
shift
buildMetricThresholdToTmp "$@"
buildMetricThreshold "$@"
;;
(help)
showUsage
;;
(*)
showUsage
;;
esac
================================================
FILE: bdp-dwh/src/main/resources/bin/src-bdp-metric.sh
================================================
#!/usr/bin/env bash
export BDP_DWH_HOME="$(cd "`dirname $(readlink -nf "$0")`"/..; pwd -P)"
export SRC_BDP_METRIC_HOME="$BDP_DWH_HOME/lib/src/bdp-metric"
export SUBJECT="src :: bdp-metric"
export UNDER_LAYER_SUBJECT="tmp :: bdp-metric"
source "$BDP_DWH_HOME/bin/util.sh"
source "$SRC_BDP_METRIC_HOME/bin/sqoop-actions.sh"
source "$SRC_BDP_METRIC_HOME/bin/spark-actions.sh"
# ------------------------------------------------ Common Methods ------------------------------------------------ #
showUsage()
{
printHeading "MODULE: [ $(echo "$SUBJECT" | tr 'a-z' 'A-Z') ] USAGE"
echo "# 说明:创建metric表的schema"
echo "$0 create-metric"
echo
echo "# 说明:从数据源导入指定时间范围内的metric数据到src"
echo "$0 build-metric START_TIME END_TIME"
echo
echo "# 示例:从数据源导入2018-09-01的metric数据到src"
echo "$0 build-metric '2018-09-01T00:00+0800' '2018-09-02T00:00+0800'"
echo
}
# ---------------------------------------------- Scripts Entrance ---------------------------------------------- #
case $1 in
(create-metric)
createMetricToTmp
createMetric
;;
(build-metric)
shift
buildMetricToTmp "$@"
buildMetric "$@"
;;
(help)
showUsage
;;
(*)
showUsage
;;
esac
================================================
FILE: bdp-dwh/src/main/resources/bin/util.sh
================================================
#!/usr/bin/env bash
export TMP_DATA_BASE_DIR="/data/tmp"
export BDP_DWH_JAR_DIR="$BDP_DWH_HOME/jar"
BDP_DWH_DEPENDENCY_JARS=""
for JAR in $(ls ${BDP_DWH_JAR_DIR})
do
BDP_DWH_DEPENDENCY_JARS="$BDP_DWH_JAR_DIR/$JAR,$BDP_DWH_DEPENDENCY_JARS"
done
export BDP_DWH_DEPENDENCY_JARS=${BDP_DWH_DEPENDENCY_JARS%,}
# ----------------------------------------------- Public Methods ------------------------------------------------ #
sparkSql()
{
spark-sql \
--master yarn \
--deploy-mode client \
--name "$jobName" \
--num-executors "${spark.num.executors}" \
--executor-cores "${spark.executor.cores}" \
--executor-memory "${spark.executor.memory}" \
--conf spark.sql.warehouse.dir=${app.hdfs.user.home}/spark-warehouse \
--conf spark.sql.crossJoin.enabled=true \
--conf spark.sql.shuffle.partitions=8 \
--hiveconf hive.metastore.execute.setugi=true \
--hiveconf hive.exec.dynamic.partition=true \
--hiveconf hive.exec.dynamic.partition.mode=nonstrict \
--hiveconf hive.exec.max.dynamic.partitions=10000 \
--hiveconf hive.exec.max.dynamic.partitions.pernode=10000 \
--hiveconf hive.mapred.supports.subdirectories=true \
--hiveconf mapreduce.input.fileinputformat.input.dir.recursive=true \
--jars "$BDP_DWH_DEPENDENCY_JARS"
}
# ----------------------------------------------- Private Methods ------------------------------------------------ #
execSql()
{
jobName="$1"
sqlFile="$2"
printHeading "${jobName}"
spark-sql \
--master yarn \
--deploy-mode client \
--name "$jobName" \
--num-executors "${spark.num.executors}" \
--executor-cores "${spark.executor.cores}" \
--executor-memory "${spark.executor.memory}" \
--conf spark.sql.warehouse.dir=${app.hdfs.user.home}/spark-warehouse \
--conf spark.sql.crossJoin.enabled=true \
--hiveconf hive.metastore.execute.setugi=true \
--hiveconf hive.exec.dynamic.partition=true \
--hiveconf hive.exec.dynamic.partition.mode=nonstrict \
--hiveconf hive.exec.max.dynamic.partitions=10000 \
--hiveconf hive.exec.max.dynamic.partitions.pernode=10000 \
--hiveconf hive.mapred.supports.subdirectories=true \
--hiveconf mapreduce.input.fileinputformat.input.dir.recursive=true \
--jars "$BDP_DWH_DEPENDENCY_JARS" \
-f "$sqlFile"
}
printHeading()
{
title="$1"
paddingWidth=$((($(tput cols)-${#title})/2-3))
printf "\n%${paddingWidth}s"|tr ' ' '='
printf " $title "
printf "%${paddingWidth}s\n\n"|tr ' ' '='
}
validateTime()
{
if [ "$1" = "" ]
then
echo "Time is missing!"
exit 1
fi
TIME=$1
date -d "$TIME" >/dev/null 2>&1
if [ "$?" != "0" ]
then
echo "Invalid Time: $TIME"
exit 1
fi
}
================================================
FILE: bdp-dwh/src/main/resources/deploy.bat
================================================
@echo off
set host=${app.host}
set user=${app.user.name}
set password=${app.user.password}
set baseDir=${app.user.home}
set home=${app.home}
set buildDir=${project.build.directory}
set binZip=${project.build.finalName}-bin.zip
echo.
echo ***************************************************************************************
echo UPLOAD...
echo ***************************************************************************************
@echo on
PSCP -l %user% -pw %password% "%buildDir%\\%binZip%" "%host%:/tmp/"
PLINK -l %user% -pw %password% %host% -t "if [ ! -d '%baseDir%' ];then mkdir %baseDir%;fi"
PLINK -l %user% -pw %password% %host% -t "if [ -d '%home%' ];then rm -rf %home%;fi"
PLINK -l %user% -pw %password% %host% -t "unzip /tmp/%binZip% -d %baseDir%/"
@echo off
================================================
FILE: bdp-dwh/src/main/resources/lib/dmt/infra-metric/action/build-fact_metric.sql
================================================
-- noinspection SqlNoDataSourceInspectionForFile
-- src.bdp_metric_metric or dwh.bdp_metric_metric ??
insert overwrite table dmt.fact_metric partition(creation_date)
select m.id, a.dwid as app_dwid, s.dwid as server_dwid, mi.dwid as metric_index_dwid, d.dwid as hour_dwid, m.`timestamp`, m.value, m.creation_date
from dwh.bdp_metric_metric m
join dmt.dim_server s on m.hostname = s.hostname
join dmt.dim_app a on a.id = s.app_id
join dmt.dim_metric_index mi on mi.name = m.name
join dmt.dim_hour d on from_unixtime(unix_timestamp(m.`timestamp`),'yyyy-MM-dd HH:00:00') = d.db_hour
where
m.`timestamp` >= s.valid_from and (m.`timestamp` < s.valid_to or s.valid_to is null) and
m.`timestamp` >= a.valid_from and (m.`timestamp` < a.valid_to or a.valid_to is null) and
m.`timestamp` >= mi.valid_from and (m.`timestamp` < mi.valid_to or mi.valid_to is null) and
m.creation_date >= '@startDate@' and m.creation_date < '@endDate@';
================================================
FILE: bdp-dwh/src/main/resources/lib/dmt/infra-metric/action/build-sum_metric_avg.sql
================================================
-- noinspection SqlNoDataSourceInspectionForFile
create temporary function gen_rag as 'com.github.bdp.dwh.udf.GenRag' using jar '${app.home}/jar/${project.build.finalName}.jar';
insert overwrite table dmt.sum_metric_avg partition(creation_date)
select
ma.app_dwid,
ma.server_dwid,
ma.metric_index_dwid,
t.dwid,
ma.hour_dwid,
ma.avg_value,
gen_rag(ma.avg_value, t.amber_threshold, t.red_threshold) as rag,
ma.creation_date
from (
select
m.app_dwid,
m.server_dwid,
m.metric_index_dwid,
m.hour_dwid,
cast(round(avg(m.`value`)) as int) as avg_value,
m.creation_date
from dmt.fact_metric m
where m.creation_date >= '@startDate@' and m.creation_date < '@endDate@'
group by m.creation_date,m.app_dwid, m.server_dwid, m.metric_index_dwid, m.hour_dwid
) ma
join dmt.dim_server s on s.dwid = ma.server_dwid
join dmt.dim_metric_index dm on dm.dwid = ma.metric_index_dwid
join dmt.dim_metric_threshold t on t.server_id = s.id and t.metric_name = dm.name
where
cast(ma.creation_date as timestamp) >= s.valid_from and (cast(ma.creation_date as timestamp) < s.valid_to or s.valid_to is null) and
cast(ma.creation_date as timestamp) >= dm.valid_from and (cast(ma.creation_date as timestamp) < dm.valid_to or dm.valid_to is null) and
cast(ma.creation_date as timestamp) >= t.valid_from and (cast(ma.creation_date as timestamp) < t.valid_to or t.valid_to is null);
================================================
FILE: bdp-dwh/src/main/resources/lib/dmt/infra-metric/action/build-wide_metric_avg.sql
================================================
-- noinspection SqlNoDataSourceInspectionForFile
insert overwrite table dmt.wide_metric_avg partition(creation_date)
select
a.dwid as app_dwid,
a.name as app_name,
a.description as app_description,
a.version as app_version,
s.dwid as server_dwid,
s.hostname as server_hostname,
s.cpu_cores as server_cpu_cores,
s.memory as server_memory,
m.dwid as metric_index_dwid,
m.name as metric_name,
m.description as metric_description,
m.category as metric_category,
t.dwid as metric_threshold_dwid,
t.amber_threshold as amber_threshold,
t.red_threshold as red_threshold,
h.dwid as hour_dwid,
h.db_date as db_date,
h.db_hour as db_hour,
h.year as year,
h.month as month,
h.day as day,
h.hour as hour,
h.quarter as quarter,
h.week as week,
h.day_name as day_name,
h.month_name as month_name,
h.weekend_flag as weekend_flag,
avg_value,
rag,
creation_date
from dmt.sum_metric_avg ma
join dmt.dim_app a on a.dwid = ma.app_dwid
join dmt.dim_server s on s.dwid = ma.server_dwid
join dmt.dim_metric_index m on m.dwid = ma.metric_index_dwid
join dmt.dim_metric_threshold t on t.server_id = s.id and t.metric_name = m.name
join dmt.dim_hour h on h.dwid = ma.hour_dwid
where ma.creation_date >= '@startDate@' and ma.creation_date < '@endDate@';
================================================
FILE: bdp-dwh/src/main/resources/lib/dmt/infra-metric/bin/spark-actions.sh
================================================
#!/usr/bin/env bash
create()
{
target="$1"
execSql "job name: create schema of [ $target @ $SUBJECT ]" "$DMT_INFRA_METRIC_HOME/schema/$target.sql"
}
build()
{
target="$1"
validateTime "$2"
validateTime "$3"
startDate=$(date -d "$2" +"%F")
endDate=$(date -d "$3" +"%F")
template="build-$target.sql"
sed "s/@startDate@/$startDate/g" "$DMT_INFRA_METRIC_HOME/action/$template" | \
sed "s/@endDate@/$endDate/g" > "$DMT_INFRA_METRIC_HOME/action/.$template"
execSql "job name: build [ $target ] data from [ $target @ $UNDER_LAYER_SUBJECT ] to [ $target @ $SUBJECT ]" \
"$DMT_INFRA_METRIC_HOME/action/.$template"
}
createFactMetric()
{
create "fact_metric"
}
buildFactMetric()
{
build "fact_metric" "$1" "$2"
}
createSumMetricAvg()
{
create "sum_metric_avg"
}
buildSumMetricAvg()
{
build "sum_metric_avg" "$1" "$2"
}
createWideMetricAvg()
{
create "wide_metric_avg"
}
buildWideMetricAvg()
{
build "wide_metric_avg" "$1" "$2"
}
================================================
FILE: bdp-dwh/src/main/resources/lib/dmt/infra-metric/schema/fact_metric.sql
================================================
-- noinspection sqlnodatasourceinspectionforfile
drop table if exists dmt.fact_metric;
create table if not exists dmt.fact_metric (
id bigint,
app_dwid bigint,
server_dwid bigint,
metric_index_dwid bigint,
hour_dwid bigint,
`timestamp` timestamp,
value bigint
)
partitioned by (creation_date string)
stored as parquet;
================================================
FILE: bdp-dwh/src/main/resources/lib/dmt/infra-metric/schema/sum_metric_avg.sql
================================================
-- noinspection sqlnodatasourceinspectionforfile
drop table if exists dmt.sum_metric_avg;
create table if not exists dmt.sum_metric_avg (
app_dwid bigint,
server_dwid bigint,
metric_index_dwid bigint,
metric_threshold_dwid bigint,
hour_dwid bigint,
avg_value int,
rag string
)
partitioned by (creation_date string)
stored as parquet;
================================================
FILE: bdp-dwh/src/main/resources/lib/dmt/infra-metric/schema/wide_metric_avg.sql
================================================
-- noinspection sqlnodatasourceinspectionforfile
drop table if exists dmt.wide_metric_avg;
create table if not exists dmt.wide_metric_avg (
app_dwid bigint,
app_name string,
app_description string,
app_version string,
server_dwid bigint,
server_hostname string,
server_cpu_cores int,
server_memory int,
metric_index_dwid bigint,
metric_name string,
metric_description string,
metric_category string,
metric_threshold_dwid bigint,
amber_threshold int,
red_threshold int,
hour_dwid bigint,
db_date string,
db_hour timestamp,
year int,
month int,
day int,
hour int,
quarter int,
week int,
day_name string,
month_name string,
weekend_flag boolean,
avg_value bigint,
rag string
)
partitioned by (creation_date string)
stored as parquet;
================================================
FILE: bdp-dwh/src/main/resources/lib/dmt/master-data/action/build-dim_app.sql
================================================
-- noinspection SqlNoDataSourceInspectionForFile
set spark.sql.hive.convertMetastoreParquet=false;
set spark.sql.parser.quotedRegexColumnNames=true;
-- 将新增和变更的数据定义为一个独立数据集,便于后续操作中引用
create or replace temporary view updated_and_added_records as
select
s.`(creation_time|update_time|imported_time)?+.+`
from
src.bdp_master_app s
where
s.update_date >='@startDate@' and s.update_date < '@endDate@';
insert overwrite table dmt.dim_app
select
*
from(
-- 针对DMT全量表的操作:
-- 操作1.1: 将DMT全量表中的“更新前的数据”复制到结果集,失效日期取SRC增量表中记录的更新时间,有效标记位置为"false"
-- 操作1.2: 将DMT全量表中的“变更历史记录”复制到结果集,不做任何修改
select
m.`(valid_to|eff_flag)?+.+`,
-- 如果是DMT中的“更新前的记录”,失效日期取增量记录里的更新时间,否则沿用DMT全量表中的原有值
case when m.eff_flag = true and u.id is not null then
u.update_date
else
m.valid_to
end as
valid_to,
-- 如果是DMT中的“更新前的记录”,有效标记位置为"false",否则沿用DMT全量表中的原有值
case when m.eff_flag = true and u.id is not null then
false
else
m.eff_flag
end as
eff_flag
from
dmt.dim_app m
left join
updated_and_added_records u
on
m.id = u.id
union all
-- 操作2: 针对SRC增量表(新增和变更数据集)的操作: 将增量数据复制到结果集,生效日期取增量记录里的更新时间,有效标记位置为"true"
select
row_number() over(order by 0) + m.max_id as dwid, -- 在最大ID的基础上累加,生成数仓中的代理主键dwid
u.`(update_date)?+.+`,
u.update_date as valid_from, -- 将“更新后的记录”的更新日期作为生效日期
null as valid_to,
true as eff_flag -- 有效标记位置为"true"
from
updated_and_added_records u
cross join
(select coalesce(max(dwid),0) as max_id from dmt.dim_app) m
);
================================================
FILE: bdp-dwh/src/main/resources/lib/dmt/master-data/action/build-dim_hour.sql
================================================
-- noinspection SqlNoDataSourceInspectionForFile
insert overwrite table dmt.dim_hour
select
dwid,
db_date,
db_hour,
year,
month,
day,
hour,
quarter,
week,
day_name,
month_name,
weekend_flag
from
tmp.dim_hour;
================================================
FILE: bdp-dwh/src/main/resources/lib/dmt/master-data/action/build-dim_metric_index.sql
================================================
-- noinspection SqlNoDataSourceInspectionForFile
set spark.sql.hive.convertMetastoreParquet=false;
set spark.sql.parser.quotedRegexColumnNames=true;
-- 将新增和变更的数据定义为一个独立数据集,便于后续操作中引用
create or replace temporary view updated_and_added_records as
select
s.`(creation_time|update_time|imported_time)?+.+`
from
src.bdp_master_metric_index s
where
s.update_date >='@startDate@' and s.update_date < '@endDate@';
insert overwrite table dmt.dim_metric_index
select
*
from(
-- 针对DMT全量表的操作:
-- 操作1.1: 将DMT全量表中的“更新前的数据”复制到结果集,失效日期取SRC增量表中记录的更新时间,有效标记位置为"false"
-- 操作1.2: 将DMT全量表中的“变更历史记录”复制到结果集,不做任何修改
select
m.`(valid_to|eff_flag)?+.+`,
-- 如果是“更新前的记录”,失效日期取增量记录里的更新时间,否则沿用全量记录中的原有值
case when m.eff_flag = true and u.id is not null then
u.update_date
else
m.valid_to
end as
valid_to,
-- 如果是“更新前的记录”,有效标记位置为"false",否则沿用全量记录中的原有值
case when m.eff_flag = true and u.id is not null then
false
else
m.eff_flag
end as
eff_flag
from
dmt.dim_metric_index m
left join
updated_and_added_records u
on
m.id = u.id
union all
-- 操作2: 针对SRC增量表(新增和变更数据集)的操作: 将增量数据复制到结果集,生效日期取增量记录里的更新时间,有效标记位置为"true"
select
row_number() over(order by 0) + m.max_id as dwid, -- 在最大ID的基础上累加,生成数仓中的代理主键dwid
u.`(update_date)?+.+`,
u.update_date as valid_from, -- 将“更新后的记录”的更新日期作为生效日期
null as valid_to,
true as eff_flag -- 有效标记位置为"true"
from
updated_and_added_records u
cross join
(select coalesce(max(dwid),0) as max_id from dmt.dim_metric_index) m
);
================================================
FILE: bdp-dwh/src/main/resources/lib/dmt/master-data/action/build-dim_metric_threshold.sql
================================================
-- noinspection SqlNoDataSourceInspectionForFile
set spark.sql.hive.convertMetastoreParquet=false;
set spark.sql.parser.quotedRegexColumnNames=true;
-- 将新增和变更的数据定义为一个独立数据集,便于后续操作中引用
create or replace temporary view updated_and_added_records as
select
s.`(creation_time|update_time|imported_time)?+.+`
from
src.bdp_master_metric_threshold s
where
s.update_date >='@startDate@' and s.update_date < '@endDate@';
insert overwrite table dmt.dim_metric_threshold
select
*
from(
-- 针对DMT全量表的操作:
-- 操作1.1: 将DMT全量表中的“更新前的数据”复制到结果集,失效日期取SRC增量表中记录的更新时间,有效标记位置为"false"
-- 操作1.2: 将DMT全量表中的“变更历史记录”复制到结果集,不做任何修改
select
m.`(valid_to|eff_flag)?+.+`,
-- 如果是“更新后的记录”,失效日期取增量记录里的更新时间,否则沿用全量记录中的原有值
case when m.eff_flag = true and u.server_id is not null and u.metric_name is not null then
u.update_date
else
m.valid_to
end as
valid_to,
-- 如果是“更新后的记录”,有效标记位置为"false",否则沿用全量记录中的原有值
case when m.eff_flag = true and u.server_id is not null and u.metric_name is not null then
false
else
m.eff_flag
end as
eff_flag
from
dmt.dim_metric_threshold m
left join
updated_and_added_records u
on
m.server_id = u.server_id and m.metric_name = u.metric_name
union all
-- 操作2: 针对SRC增量表(新增和变更数据集)的操作: 将增量数据复制到结果集,生效日期取增量记录里的更新时间,有效标记位置为"true"
select
row_number() over(order by 0) + m.max_id as dwid, -- 在最大ID的基础上累加,生成数仓中的代理主键dwid
u.`(update_date)?+.+`,
u.update_date as valid_from, -- 将“更新后的记录”的更新日期作为生效日期
null as valid_to,
true as eff_flag -- 有效标记位置为"true"
from
updated_and_added_records u
cross join
(select coalesce(max(dwid),0) as max_id from dmt.dim_metric_threshold) m
);
================================================
FILE: bdp-dwh/src/main/resources/lib/dmt/master-data/action/build-dim_server.sql
================================================
-- noinspection SqlNoDataSourceInspectionForFile
set spark.sql.hive.convertMetastoreParquet=false;
set spark.sql.parser.quotedRegexColumnNames=true;
-- 将新增和变更的数据定义为一个独立数据集,便于后续操作中引用
create or replace temporary view updated_and_added_records as
select
s.`(creation_time|update_time|imported_time)?+.+`
from
src.bdp_master_server s
where
s.update_date >='@startDate@' and s.update_date < '@endDate@';
insert overwrite table dmt.dim_server
select
*
from(
-- 针对DMT全量表的操作:
-- 操作1.1: 将DMT全量表中的“更新前的数据”复制到结果集,失效日期取SRC增量表中记录的更新时间,有效标记位置为"false"
-- 操作1.2: 将DMT全量表中的“变更历史记录”复制到结果集,不做任何修改
select
m.`(valid_to|eff_flag)?+.+`,
-- 如果是“更新后的记录”,失效日期取增量记录里的更新时间,否则沿用全量记录中的原有值
case when m.eff_flag = true and u.id is not null then
u.update_date
else
m.valid_to
end as
valid_to,
-- 如果是“更新后的记录”,有效标记位置为"false",否则沿用全量记录中的原有值
case when m.eff_flag = true and u.id is not null then
false
else
m.eff_flag
end as
eff_flag
from
dmt.dim_server m
left join
updated_and_added_records u
on
m.id = u.id
union all
-- 操作2: 针对SRC增量表(新增和变更数据集)的操作: 将增量数据复制到结果集,生效日期取增量记录里的更新时间,有效标记位置为"true"
select
row_number() over(order by 0) + m.max_id as dwid, -- 在最大ID的基础上累加,生成数仓中的代理主键dwid
u.`(update_date)?+.+`,
u.update_date as valid_from, -- 将“更新后的记录”的更新日期作为生效日期
null as valid_to,
true as eff_flag -- 有效标记位置为"true"
from
updated_and_added_records u
cross join
(select coalesce(max(dwid),0) as max_id from dmt.dim_server) m
);
================================================
FILE: bdp-dwh/src/main/resources/lib/dmt/master-data/bin/spark-actions.sh
================================================
#!/usr/bin/env bash
create()
{
target="$1"
execSql "job name: create schema of [ $target @ $SUBJECT ]" "$DMT_MASTER_DATA_HOME/schema/$target.sql"
}
build()
{
target="$1"
validateTime "$2"
validateTime "$3"
startDate=$(date -d "$2" +"%F")
endDate=$(date -d "$3" +"%F")
template="build-$target.sql"
sed "s/@startDate@/$startDate/g" "$DMT_MASTER_DATA_HOME/action/$template" | \
sed "s/@endDate@/$endDate/g" > "$DMT_MASTER_DATA_HOME/action/.$template"
execSql "job name: build [ $target ] data from [ $target @ $UNDER_LAYER_SUBJECT ] to [ $target @ $SUBJECT ]" \
"$DMT_MASTER_DATA_HOME/action/.$template"
}
createApp()
{
create "dim_app"
}
buildApp()
{
build "dim_app" "$1" "$2"
}
createServer()
{
create "dim_server"
}
buildServer()
{
build "dim_server" "$1" "$2"
}
createMetricIndex()
{
create "dim_metric_index"
}
buildMetricIndex()
{
build "dim_metric_index" "$1" "$2"
}
createMetricThreshold()
{
create "dim_metric_threshold"
}
buildMetricThreshold()
{
build "dim_metric_threshold" "$1" "$2"
}
createHour()
{
create "dim_hour"
}
buildHour()
{
# put data dimension data file onto HDFS.
template="build-dim_hour.sql"
dimHourLocalPath="$DMT_MASTER_DATA_HOME/data/dim_hour.csv"
dimHourHdfsDir="/data/tmp/dim_hour"
hdfs dfs -test -d $dimHourHdfsDir && hdfs dfs -rm -r -f -skipTrash $dimHourHdfsDir
hdfs dfs -mkdir -p $dimHourHdfsDir
dimHourHdfsPath="$dimHourHdfsDir/dim_hour.csv"
target="dim_hour"
hdfs dfs -put -f $dimHourLocalPath $dimHourHdfsPath
execSql "job name: build [ $target ] data for [ $SUBJECT ], data flow: [ $target @ $dimHourLocalPath -> $target @ $SUBJECT ]" "$DMT_MASTER_DATA_HOME/action/$template"
}
================================================
FILE: bdp-dwh/src/main/resources/lib/dmt/master-data/data/dim_hour.csv
================================================
2018010100,2018-01-01,2018-01-01 00:00:00,2018,1,1,0,1,1,Monday,January,false
2018010101,2018-01-01,2018-01-01 01:00:00,2018,1,1,1,1,1,Monday,January,false
2018010102,2018-01-01,2018-01-01 02:00:00,2018,1,1,2,1,1,Monday,January,false
2018010103,2018-01-01,2018-01-01 03:00:00,2018,1,1,3,1,1,Monday,January,false
2018010104,2018-01-01,2018-01-01 04:00:00,2018,1,1,4,1,1,Monday,January,false
2018010105,2018-01-01,2018-01-01 05:00:00,2018,1,1,5,1,1,Monday,January,false
2018010106,2018-01-01,2018-01-01 06:00:00,2018,1,1,6,1,1,Monday,January,false
2018010107,2018-01-01,2018-01-01 07:00:00,2018,1,1,7,1,1,Monday,January,false
2018010108,2018-01-01,2018-01-01 08:00:00,2018,1,1,8,1,1,Monday,January,false
2018010109,2018-01-01,2018-01-01 09:00:00,2018,1,1,9,1,1,Monday,January,false
2018010110,2018-01-01,2018-01-01 10:00:00,2018,1,1,10,1,1,Monday,January,false
2018010111,2018-01-01,2018-01-01 11:00:00,2018,1,1,11,1,1,Monday,January,false
2018010112,2018-01-01,2018-01-01 12:00:00,2018,1,1,12,1,1,Monday,January,false
2018010113,2018-01-01,2018-01-01 13:00:00,2018,1,1,13,1,1,Monday,January,false
2018010114,2018-01-01,2018-01-01 14:00:00,2018,1,1,14,1,1,Monday,January,false
2018010115,2018-01-01,2018-01-01 15:00:00,2018,1,1,15,1,1,Monday,January,false
2018010116,2018-01-01,2018-01-01 16:00:00,2018,1,1,16,1,1,Monday,January,false
2018010117,2018-01-01,2018-01-01 17:00:00,2018,1,1,17,1,1,Monday,January,false
2018010118,2018-01-01,2018-01-01 18:00:00,2018,1,1,18,1,1,Monday,January,false
2018010119,2018-01-01,2018-01-01 19:00:00,2018,1,1,19,1,1,Monday,January,false
2018010120,2018-01-01,2018-01-01 20:00:00,2018,1,1,20,1,1,Monday,January,false
2018010121,2018-01-01,2018-01-01 21:00:00,2018,1,1,21,1,1,Monday,January,false
2018010122,2018-01-01,2018-01-01 22:00:00,2018,1,1,22,1,1,Monday,January,false
2018010123,2018-01-01,2018-01-01 23:00:00,2018,1,1,23,1,1,Monday,January,false
2018010200,2018-01-02,2018-01-02 00:00:00,2018,1,2,0,1,1,Tuesday,January,false
2018010201,2018-01-02,2018-01-02 01:00:00,2018,1,2,1,1,1,Tuesday,January,false
2018010202,2018-01-02,2018-01-02 02:00:00,2018,1,2,2,1,1,Tuesday,January,false
2018010203,2018-01-02,2018-01-02 03:00:00,2018,1,2,3,1,1,Tuesday,January,false
2018010204,2018-01-02,2018-01-02 04:00:00,2018,1,2,4,1,1,Tuesday,January,false
2018010205,2018-01-02,2018-01-02 05:00:00,2018,1,2,5,1,1,Tuesday,January,false
2018010206,2018-01-02,2018-01-02 06:00:00,2018,1,2,6,1,1,Tuesday,January,false
2018010207,2018-01-02,2018-01-02 07:00:00,2018,1,2,7,1,1,Tuesday,January,false
2018010208,2018-01-02,2018-01-02 08:00:00,2018,1,2,8,1,1,Tuesday,January,false
2018010209,2018-01-02,2018-01-02 09:00:00,2018,1,2,9,1,1,Tuesday,January,false
2018010210,2018-01-02,2018-01-02 10:00:00,2018,1,2,10,1,1,Tuesday,January,false
2018010211,2018-01-02,2018-01-02 11:00:00,2018,1,2,11,1,1,Tuesday,January,false
2018010212,2018-01-02,2018-01-02 12:00:00,2018,1,2,12,1,1,Tuesday,January,false
2018010213,2018-01-02,2018-01-02 13:00:00,2018,1,2,13,1,1,Tuesday,January,false
2018010214,2018-01-02,2018-01-02 14:00:00,2018,1,2,14,1,1,Tuesday,January,false
2018010215,2018-01-02,2018-01-02 15:00:00,2018,1,2,15,1,1,Tuesday,January,false
2018010216,2018-01-02,2018-01-02 16:00:00,2018,1,2,16,1,1,Tuesday,January,false
2018010217,2018-01-02,2018-01-02 17:00:00,2018,1,2,17,1,1,Tuesday,January,false
2018010218,2018-01-02,2018-01-02 18:00:00,2018,1,2,18,1,1,Tuesday,January,false
2018010219,2018-01-02,2018-01-02 19:00:00,2018,1,2,19,1,1,Tuesday,January,false
2018010220,2018-01-02,2018-01-02 20:00:00,2018,1,2,20,1,1,Tuesday,January,false
2018010221,2018-01-02,2018-01-02 21:00:00,2018,1,2,21,1,1,Tuesday,January,false
2018010222,2018-01-02,2018-01-02 22:00:00,2018,1,2,22,1,1,Tuesday,January,false
2018010223,2018-01-02,2018-01-02 23:00:00,2018,1,2,23,1,1,Tuesday,January,false
2018010300,2018-01-03,2018-01-03 00:00:00,2018,1,3,0,1,1,Wednesday,January,false
2018010301,2018-01-03,2018-01-03 01:00:00,2018,1,3,1,1,1,Wednesday,January,false
2018010302,2018-01-03,2018-01-03 02:00:00,2018,1,3,2,1,1,Wednesday,January,false
2018010303,2018-01-03,2018-01-03 03:00:00,2018,1,3,3,1,1,Wednesday,January,false
2018010304,2018-01-03,2018-01-03 04:00:00,2018,1,3,4,1,1,Wednesday,January,false
2018010305,2018-01-03,2018-01-03 05:00:00,2018,1,3,5,1,1,Wednesday,January,false
2018010306,2018-01-03,2018-01-03 06:00:00,2018,1,3,6,1,1,Wednesday,January,false
2018010307,2018-01-03,2018-01-03 07:00:00,2018,1,3,7,1,1,Wednesday,January,false
2018010308,2018-01-03,2018-01-03 08:00:00,2018,1,3,8,1,1,Wednesday,January,false
2018010309,2018-01-03,2018-01-03 09:00:00,2018,1,3,9,1,1,Wednesday,January,false
2018010310,2018-01-03,2018-01-03 10:00:00,2018,1,3,10,1,1,Wednesday,January,false
2018010311,2018-01-03,2018-01-03 11:00:00,2018,1,3,11,1,1,Wednesday,January,false
2018010312,2018-01-03,2018-01-03 12:00:00,2018,1,3,12,1,1,Wednesday,January,false
2018010313,2018-01-03,2018-01-03 13:00:00,2018,1,3,13,1,1,Wednesday,January,false
2018010314,2018-01-03,2018-01-03 14:00:00,2018,1,3,14,1,1,Wednesday,January,false
2018010315,2018-01-03,2018-01-03 15:00:00,2018,1,3,15,1,1,Wednesday,January,false
2018010316,2018-01-03,2018-01-03 16:00:00,2018,1,3,16,1,1,Wednesday,January,false
2018010317,2018-01-03,2018-01-03 17:00:00,2018,1,3,17,1,1,Wednesday,January,false
2018010318,2018-01-03,2018-01-03 18:00:00,2018,1,3,18,1,1,Wednesday,January,false
2018010319,2018-01-03,2018-01-03 19:00:00,2018,1,3,19,1,1,Wednesday,January,false
2018010320,2018-01-03,2018-01-03 20:00:00,2018,1,3,20,1,1,Wednesday,January,false
2018010321,2018-01-03,2018-01-03 21:00:00,2018,1,3,21,1,1,Wednesday,January,false
2018010322,2018-01-03,2018-01-03 22:00:00,2018,1,3,22,1,1,Wednesday,January,false
2018010323,2018-01-03,2018-01-03 23:00:00,2018,1,3,23,1,1,Wednesday,January,false
2018010400,2018-01-04,2018-01-04 00:00:00,2018,1,4,0,1,1,Thursday,January,false
2018010401,2018-01-04,2018-01-04 01:00:00,2018,1,4,1,1,1,Thursday,January,false
2018010402,2018-01-04,2018-01-04 02:00:00,2018,1,4,2,1,1,Thursday,January,false
2018010403,2018-01-04,2018-01-04 03:00:00,2018,1,4,3,1,1,Thursday,January,false
2018010404,2018-01-04,2018-01-04 04:00:00,2018,1,4,4,1,1,Thursday,January,false
2018010405,2018-01-04,2018-01-04 05:00:00,2018,1,4,5,1,1,Thursday,January,false
2018010406,2018-01-04,2018-01-04 06:00:00,2018,1,4,6,1,1,Thursday,January,false
2018010407,2018-01-04,2018-01-04 07:00:00,2018,1,4,7,1,1,Thursday,January,false
2018010408,2018-01-04,2018-01-04 08:00:00,2018,1,4,8,1,1,Thursday,January,false
2018010409,2018-01-04,2018-01-04 09:00:00,2018,1,4,9,1,1,Thursday,January,false
2018010410,2018-01-04,2018-01-04 10:00:00,2018,1,4,10,1,1,Thursday,January,false
2018010411,2018-01-04,2018-01-04 11:00:00,2018,1,4,11,1,1,Thursday,January,false
2018010412,2018-01-04,2018-01-04 12:00:00,2018,1,4,12,1,1,Thursday,January,false
2018010413,2018-01-04,2018-01-04 13:00:00,2018,1,4,13,1,1,Thursday,January,false
2018010414,2018-01-04,2018-01-04 14:00:00,2018,1,4,14,1,1,Thursday,January,false
2018010415,2018-01-04,2018-01-04 15:00:00,2018,1,4,15,1,1,Thursday,January,false
2018010416,2018-01-04,2018-01-04 16:00:00,2018,1,4,16,1,1,Thursday,January,false
2018010417,2018-01-04,2018-01-04 17:00:00,2018,1,4,17,1,1,Thursday,January,false
2018010418,2018-01-04,2018-01-04 18:00:00,2018,1,4,18,1,1,Thursday,January,false
2018010419,2018-01-04,2018-01-04 19:00:00,2018,1,4,19,1,1,Thursday,January,false
2018010420,2018-01-04,2018-01-04 20:00:00,2018,1,4,20,1,1,Thursday,January,false
2018010421,2018-01-04,2018-01-04 21:00:00,2018,1,4,21,1,1,Thursday,January,false
2018010422,2018-01-04,2018-01-04 22:00:00,2018,1,4,22,1,1,Thursday,January,false
2018010423,2018-01-04,2018-01-04 23:00:00,2018,1,4,23,1,1,Thursday,January,false
2018010500,2018-01-05,2018-01-05 00:00:00,2018,1,5,0,1,1,Friday,January,false
2018010501,2018-01-05,2018-01-05 01:00:00,2018,1,5,1,1,1,Friday,January,false
2018010502,2018-01-05,2018-01-05 02:00:00,2018,1,5,2,1,1,Friday,January,false
2018010503,2018-01-05,2018-01-05 03:00:00,2018,1,5,3,1,1,Friday,January,false
2018010504,2018-01-05,2018-01-05 04:00:00,2018,1,5,4,1,1,Friday,January,false
2018010505,2018-01-05,2018-01-05 05:00:00,2018,1,5,5,1,1,Friday,January,false
2018010506,2018-01-05,2018-01-05 06:00:00,2018,1,5,6,1,1,Friday,January,false
2018010507,2018-01-05,2018-01-05 07:00:00,2018,1,5,7,1,1,Friday,January,false
2018010508,2018-01-05,2018-01-05 08:00:00,2018,1,5,8,1,1,Friday,January,false
2018010509,2018-01-05,2018-01-05 09:00:00,2018,1,5,9,1,1,Friday,January,false
2018010510,2018-01-05,2018-01-05 10:00:00,2018,1,5,10,1,1,Friday,January,false
2018010511,2018-01-05,2018-01-05 11:00:00,2018,1,5,11,1,1,Friday,January,false
2018010512,2018-01-05,2018-01-05 12:00:00,2018,1,5,12,1,1,Friday,January,false
2018010513,2018-01-05,2018-01-05 13:00:00,2018,1,5,13,1,1,Friday,January,false
2018010514,2018-01-05,2018-01-05 14:00:00,2018,1,5,14,1,1,Friday,January,false
2018010515,2018-01-05,2018-01-05 15:00:00,2018,1,5,15,1,1,Friday,January,false
2018010516,2018-01-05,2018-01-05 16:00:00,2018,1,5,16,1,1,Friday,January,false
2018010517,2018-01-05,2018-01-05 17:00:00,2018,1,5,17,1,1,Friday,January,false
2018010518,2018-01-05,2018-01-05 18:00:00,2018,1,5,18,1,1,Friday,January,false
2018010519,2018-01-05,2018-01-05 19:00:00,2018,1,5,19,1,1,Friday,January,false
2018010520,2018-01-05,2018-01-05 20:00:00,2018,1,5,20,1,1,Friday,January,false
2018010521,2018-01-05,2018-01-05 21:00:00,2018,1,5,21,1,1,Friday,January,false
2018010522,2018-01-05,2018-01-05 22:00:00,2018,1,5,22,1,1,Friday,January,false
2018010523,2018-01-05,2018-01-05 23:00:00,2018,1,5,23,1,1,Friday,January,false
2018010600,2018-01-06,2018-01-06 00:00:00,2018,1,6,0,1,1,Saturday,January,true
2018010601,2018-01-06,2018-01-06 01:00:00,2018,1,6,1,1,1,Saturday,January,true
2018010602,2018-01-06,2018-01-06 02:00:00,2018,1,6,2,1,1,Saturday,January,true
2018010603,2018-01-06,2018-01-06 03:00:00,2018,1,6,3,1,1,Saturday,January,true
2018010604,2018-01-06,2018-01-06 04:00:00,2018,1,6,4,1,1,Saturday,January,true
2018010605,2018-01-06,2018-01-06 05:00:00,2018,1,6,5,1,1,Saturday,January,true
2018010606,2018-01-06,2018-01-06 06:00:00,2018,1,6,6,1,1,Saturday,January,true
2018010607,2018-01-06,2018-01-06 07:00:00,2018,1,6,7,1,1,Saturday,January,true
2018010608,2018-01-06,2018-01-06 08:00:00,2018,1,6,8,1,1,Saturday,January,true
2018010609,2018-01-06,2018-01-06 09:00:00,2018,1,6,9,1,1,Saturday,January,true
2018010610,2018-01-06,2018-01-06 10:00:00,2018,1,6,10,1,1,Saturday,January,true
2018010611,2018-01-06,2018-01-06 11:00:00,2018,1,6,11,1,1,Saturday,January,true
2018010612,2018-01-06,2018-01-06 12:00:00,2018,1,6,12,1,1,Saturday,January,true
2018010613,2018-01-06,2018-01-06 13:00:00,2018,1,6,13,1,1,Saturday,January,true
2018010614,2018-01-06,2018-01-06 14:00:00,2018,1,6,14,1,1,Saturday,January,true
2018010615,2018-01-06,2018-01-06 15:00:00,2018,1,6,15,1,1,Saturday,January,true
2018010616,2018-01-06,2018-01-06 16:00:00,2018,1,6,16,1,1,Saturday,January,true
2018010617,2018-01-06,2018-01-06 17:00:00,2018,1,6,17,1,1,Saturday,January,true
2018010618,2018-01-06,2018-01-06 18:00:00,2018,1,6,18,1,1,Saturday,January,true
2018010619,2018-01-06,2018-01-06 19:00:00,2018,1,6,19,1,1,Saturday,January,true
2018010620,2018-01-06,2018-01-06 20:00:00,2018,1,6,20,1,1,Saturday,January,true
2018010621,2018-01-06,2018-01-06 21:00:00,2018,1,6,21,1,1,Saturday,January,true
2018010622,2018-01-06,2018-01-06 22:00:00,2018,1,6,22,1,1,Saturday,January,true
2018010623,2018-01-06,2018-01-06 23:00:00,2018,1,6,23,1,1,Saturday,January,true
2018010700,2018-01-07,2018-01-07 00:00:00,2018,1,7,0,1,1,Sunday,January,true
2018010701,2018-01-07,2018-01-07 01:00:00,2018,1,7,1,1,1,Sunday,January,true
2018010702,2018-01-07,2018-01-07 02:00:00,2018,1,7,2,1,1,Sunday,January,true
2018010703,2018-01-07,2018-01-07 03:00:00,2018,1,7,3,1,1,Sunday,January,true
2018010704,2018-01-07,2018-01-07 04:00:00,2018,1,7,4,1,1,Sunday,January,true
2018010705,2018-01-07,2018-01-07 05:00:00,2018,1,7,5,1,1,Sunday,January,true
2018010706,2018-01-07,2018-01-07 06:00:00,2018,1,7,6,1,1,Sunday,January,true
2018010707,2018-01-07,2018-01-07 07:00:00,2018,1,7,7,1,1,Sunday,January,true
2018010708,2018-01-07,2018-01-07 08:00:00,2018,1,7,8,1,1,Sunday,January,true
2018010709,2018-01-07,2018-01-07 09:00:00,2018,1,7,9,1,1,Sunday,January,true
2018010710,2018-01-07,2018-01-07 10:00:00,2018,1,7,10,1,1,Sunday,January,true
2018010711,2018-01-07,2018-01-07 11:00:00,2018,1,7,11,1,1,Sunday,January,true
2018010712,2018-01-07,2018-01-07 12:00:00,2018,1,7,12,1,1,Sunday,January,true
2018010713,2018-01-07,2018-01-07 13:00:00,2018,1,7,13,1,1,Sunday,January,true
2018010714,2018-01-07,2018-01-07 14:00:00,2018,1,7,14,1,1,Sunday,January,true
2018010715,2018-01-07,2018-01-07 15:00:00,2018,1,7,15,1,1,Sunday,January,true
2018010716,2018-01-07,2018-01-07 16:00:00,2018,1,7,16,1,1,Sunday,January,true
2018010717,2018-01-07,2018-01-07 17:00:00,2018,1,7,17,1,1,Sunday,January,true
2018010718,2018-01-07,2018-01-07 18:00:00,2018,1,7,18,1,1,Sunday,January,true
2018010719,2018-01-07,2018-01-07 19:00:00,2018,1,7,19,1,1,Sunday,January,true
2018010720,2018-01-07,2018-01-07 20:00:00,2018,1,7,20,1,1,Sunday,January,true
2018010721,2018-01-07,2018-01-07 21:00:00,2018,1,7,21,1,1,Sunday,January,true
2018010722,2018-01-07,2018-01-07 22:00:00,2018,1,7,22,1,1,Sunday,January,true
2018010723,2018-01-07,2018-01-07 23:00:00,2018,1,7,23,1,1,Sunday,January,true
2018010800,2018-01-08,2018-01-08 00:00:00,2018,1,8,0,1,2,Monday,January,false
2018010801,2018-01-08,2018-01-08 01:00:00,2018,1,8,1,1,2,Monday,January,false
2018010802,2018-01-08,2018-01-08 02:00:00,2018,1,8,2,1,2,Monday,January,false
2018010803,2018-01-08,2018-01-08 03:00:00,2018,1,8,3,1,2,Monday,January,false
2018010804,2018-01-08,2018-01-08 04:00:00,2018,1,8,4,1,2,Monday,January,false
2018010805,2018-01-08,2018-01-08 05:00:00,2018,1,8,5,1,2,Monday,January,false
2018010806,2018-01-08,2018-01-08 06:00:00,2018,1,8,6,1,2,Monday,January,false
2018010807,2018-01-08,2018-01-08 07:00:00,2018,1,8,7,1,2,Monday,January,false
2018010808,2018-01-08,2018-01-08 08:00:00,2018,1,8,8,1,2,Monday,January,false
2018010809,2018-01-08,2018-01-08 09:00:00,2018,1,8,9,1,2,Monday,January,false
2018010810,2018-01-08,2018-01-08 10:00:00,2018,1,8,10,1,2,Monday,January,false
2018010811,2018-01-08,2018-01-08 11:00:00,2018,1,8,11,1,2,Monday,January,false
2018010812,2018-01-08,2018-01-08 12:00:00,2018,1,8,12,1,2,Monday,January,false
2018010813,2018-01-08,2018-01-08 13:00:00,2018,1,8,13,1,2,Monday,January,false
2018010814,2018-01-08,2018-01-08 14:00:00,2018,1,8,14,1,2,Monday,January,false
2018010815,2018-01-08,2018-01-08 15:00:00,2018,1,8,15,1,2,Monday,January,false
2018010816,2018-01-08,2018-01-08 16:00:00,2018,1,8,16,1,2,Monday,January,false
2018010817,2018-01-08,2018-01-08 17:00:00,2018,1,8,17,1,2,Monday,January,false
2018010818,2018-01-08,2018-01-08 18:00:00,2018,1,8,18,1,2,Monday,January,false
2018010819,2018-01-08,2018-01-08 19:00:00,2018,1,8,19,1,2,Monday,January,false
2018010820,2018-01-08,2018-01-08 20:00:00,2018,1,8,20,1,2,Monday,January,false
2018010821,2018-01-08,2018-01-08 21:00:00,2018,1,8,21,1,2,Monday,January,false
2018010822,2018-01-08,2018-01-08 22:00:00,2018,1,8,22,1,2,Monday,January,false
2018010823,2018-01-08,2018-01-08 23:00:00,2018,1,8,23,1,2,Monday,January,false
2018010900,2018-01-09,2018-01-09 00:00:00,2018,1,9,0,1,2,Tuesday,January,false
2018010901,2018-01-09,2018-01-09 01:00:00,2018,1,9,1,1,2,Tuesday,January,false
2018010902,2018-01-09,2018-01-09 02:00:00,2018,1,9,2,1,2,Tuesday,January,false
2018010903,2018-01-09,2018-01-09 03:00:00,2018,1,9,3,1,2,Tuesday,January,false
2018010904,2018-01-09,2018-01-09 04:00:00,2018,1,9,4,1,2,Tuesday,January,false
2018010905,2018-01-09,2018-01-09 05:00:00,2018,1,9,5,1,2,Tuesday,January,false
2018010906,2018-01-09,2018-01-09 06:00:00,2018,1,9,6,1,2,Tuesday,January,false
2018010907,2018-01-09,2018-01-09 07:00:00,2018,1,9,7,1,2,Tuesday,January,false
2018010908,2018-01-09,2018-01-09 08:00:00,2018,1,9,8,1,2,Tuesday,January,false
2018010909,2018-01-09,2018-01-09 09:00:00,2018,1,9,9,1,2,Tuesday,January,false
2018010910,2018-01-09,2018-01-09 10:00:00,2018,1,9,10,1,2,Tuesday,January,false
2018010911,2018-01-09,2018-01-09 11:00:00,2018,1,9,11,1,2,Tuesday,January,false
2018010912,2018-01-09,2018-01-09 12:00:00,2018,1,9,12,1,2,Tuesday,January,false
2018010913,2018-01-09,2018-01-09 13:00:00,2018,1,9,13,1,2,Tuesday,January,false
2018010914,2018-01-09,2018-01-09 14:00:00,2018,1,9,14,1,2,Tuesday,January,false
2018010915,2018-01-09,2018-01-09 15:00:00,2018,1,9,15,1,2,Tuesday,January,false
2018010916,2018-01-09,2018-01-09 16:00:00,2018,1,9,16,1,2,Tuesday,January,false
2018010917,2018-01-09,2018-01-09 17:00:00,2018,1,9,17,1,2,Tuesday,January,false
2018010918,2018-01-09,2018-01-09 18:00:00,2018,1,9,18,1,2,Tuesday,January,false
2018010919,2018-01-09,2018-01-09 19:00:00,2018,1,9,19,1,2,Tuesday,January,false
2018010920,2018-01-09,2018-01-09 20:00:00,2018,1,9,20,1,2,Tuesday,January,false
2018010921,2018-01-09,2018-01-09 21:00:00,2018,1,9,21,1,2,Tuesday,January,false
2018010922,2018-01-09,2018-01-09 22:00:00,2018,1,9,22,1,2,Tuesday,January,false
2018010923,2018-01-09,2018-01-09 23:00:00,2018,1,9,23,1,2,Tuesday,January,false
2018011000,2018-01-10,2018-01-10 00:00:00,2018,1,10,0,1,2,Wednesday,January,false
2018011001,2018-01-10,2018-01-10 01:00:00,2018,1,10,1,1,2,Wednesday,January,false
2018011002,2018-01-10,2018-01-10 02:00:00,2018,1,10,2,1,2,Wednesday,January,false
2018011003,2018-01-10,2018-01-10 03:00:00,2018,1,10,3,1,2,Wednesday,January,false
2018011004,2018-01-10,2018-01-10 04:00:00,2018,1,10,4,1,2,Wednesday,January,false
2018011005,2018-01-10,2018-01-10 05:00:00,2018,1,10,5,1,2,Wednesday,January,false
2018011006,2018-01-10,2018-01-10 06:00:00,2018,1,10,6,1,2,Wednesday,January,false
2018011007,2018-01-10,2018-01-10 07:00:00,2018,1,10,7,1,2,Wednesday,January,false
2018011008,2018-01-10,2018-01-10 08:00:00,2018,1,10,8,1,2,Wednesday,January,false
2018011009,2018-01-10,2018-01-10 09:00:00,2018,1,10,9,1,2,Wednesday,January,false
2018011010,2018-01-10,2018-01-10 10:00:00,2018,1,10,10,1,2,Wednesday,January,false
2018011011,2018-01-10,2018-01-10 11:00:00,2018,1,10,11,1,2,Wednesday,January,false
2018011012,2018-01-10,2018-01-10 12:00:00,2018,1,10,12,1,2,Wednesday,January,false
2018011013,2018-01-10,2018-01-10 13:00:00,2018,1,10,13,1,2,Wednesday,January,false
2018011014,2018-01-10,2018-01-10 14:00:00,2018,1,10,14,1,2,Wednesday,January,false
2018011015,2018-01-10,2018-01-10 15:00:00,2018,1,10,15,1,2,Wednesday,January,false
2018011016,2018-01-10,2018-01-10 16:00:00,2018,1,10,16,1,2,Wednesday,January,false
2018011017,2018-01-10,2018-01-10 17:00:00,2018,1,10,17,1,2,Wednesday,January,false
2018011018,2018-01-10,2018-01-10 18:00:00,2018,1,10,18,1,2,Wednesday,January,false
2018011019,2018-01-10,2018-01-10 19:00:00,2018,1,10,19,1,2,Wednesday,January,false
2018011020,2018-01-10,2018-01-10 20:00:00,2018,1,10,20,1,2,Wednesday,January,false
2018011021,2018-01-10,2018-01-10 21:00:00,2018,1,10,21,1,2,Wednesday,January,false
2018011022,2018-01-10,2018-01-10 22:00:00,2018,1,10,22,1,2,Wednesday,January,false
2018011023,2018-01-10,2018-01-10 23:00:00,2018,1,10,23,1,2,Wednesday,January,false
2018011100,2018-01-11,2018-01-11 00:00:00,2018,1,11,0,1,2,Thursday,January,false
2018011101,2018-01-11,2018-01-11 01:00:00,2018,1,11,1,1,2,Thursday,January,false
2018011102,2018-01-11,2018-01-11 02:00:00,2018,1,11,2,1,2,Thursday,January,false
2018011103,2018-01-11,2018-01-11 03:00:00,2018,1,11,3,1,2,Thursday,January,false
2018011104,2018-01-11,2018-01-11 04:00:00,2018,1,11,4,1,2,Thursday,January,false
2018011105,2018-01-11,2018-01-11 05:00:00,2018,1,11,5,1,2,Thursday,January,false
2018011106,2018-01-11,2018-01-11 06:00:00,2018,1,11,6,1,2,Thursday,January,false
2018011107,2018-01-11,2018-01-11 07:00:00,2018,1,11,7,1,2,Thursday,January,false
2018011108,2018-01-11,2018-01-11 08:00:00,2018,1,11,8,1,2,Thursday,January,false
2018011109,2018-01-11,2018-01-11 09:00:00,2018,1,11,9,1,2,Thursday,January,false
2018011110,2018-01-11,2018-01-11 10:00:00,2018,1,11,10,1,2,Thursday,January,false
2018011111,2018-01-11,2018-01-11 11:00:00,2018,1,11,11,1,2,Thursday,January,false
2018011112,2018-01-11,2018-01-11 12:00:00,2018,1,11,12,1,2,Thursday,January,false
2018011113,2018-01-11,2018-01-11 13:00:00,2018,1,11,13,1,2,Thursday,January,false
2018011114,2018-01-11,2018-01-11 14:00:00,2018,1,11,14,1,2,Thursday,January,false
2018011115,2018-01-11,2018-01-11 15:00:00,2018,1,11,15,1,2,Thursday,January,false
2018011116,2018-01-11,2018-01-11 16:00:00,2018,1,11,16,1,2,Thursday,January,false
2018011117,2018-01-11,2018-01-11 17:00:00,2018,1,11,17,1,2,Thursday,January,false
2018011118,2018-01-11,2018-01-11 18:00:00,2018,1,11,18,1,2,Thursday,January,false
2018011119,2018-01-11,2018-01-11 19:00:00,2018,1,11,19,1,2,Thursday,January,false
2018011120,2018-01-11,2018-01-11 20:00:00,2018,1,11,20,1,2,Thursday,January,false
2018011121,2018-01-11,2018-01-11 21:00:00,2018,1,11,21,1,2,Thursday,January,false
2018011122,2018-01-11,2018-01-11 22:00:00,2018,1,11,22,1,2,Thursday,January,false
2018011123,2018-01-11,2018-01-11 23:00:00,2018,1,11,23,1,2,Thursday,January,false
2018011200,2018-01-12,2018-01-12 00:00:00,2018,1,12,0,1,2,Friday,January,false
2018011201,2018-01-12,2018-01-12 01:00:00,2018,1,12,1,1,2,Friday,January,false
2018011202,2018-01-12,2018-01-12 02:00:00,2018,1,12,2,1,2,Friday,January,false
2018011203,2018-01-12,2018-01-12 03:00:00,2018,1,12,3,1,2,Friday,January,false
2018011204,2018-01-12,2018-01-12 04:00:00,2018,1,12,4,1,2,Friday,January,false
2018011205,2018-01-12,2018-01-12 05:00:00,2018,1,12,5,1,2,Friday,January,false
2018011206,2018-01-12,2018-01-12 06:00:00,2018,1,12,6,1,2,Friday,January,false
2018011207,2018-01-12,2018-01-12 07:00:00,2018,1,12,7,1,2,Friday,January,false
2018011208,2018-01-12,2018-01-12 08:00:00,2018,1,12,8,1,2,Friday,January,false
2018011209,2018-01-12,2018-01-12 09:00:00,2018,1,12,9,1,2,Friday,January,false
2018011210,2018-01-12,2018-01-12 10:00:00,2018,1,12,10,1,2,Friday,January,false
2018011211,2018-01-12,2018-01-12 11:00:00,2018,1,12,11,1,2,Friday,January,false
2018011212,2018-01-12,2018-01-12 12:00:00,2018,1,12,12,1,2,Friday,January,false
2018011213,2018-01-12,2018-01-12 13:00:00,2018,1,12,13,1,2,Friday,January,false
2018011214,2018-01-12,2018-01-12 14:00:00,2018,1,12,14,1,2,Friday,January,false
2018011215,2018-01-12,2018-01-12 15:00:00,2018,1,12,15,1,2,Friday,January,false
2018011216,2018-01-12,2018-01-12 16:00:00,2018,1,12,16,1,2,Friday,January,false
2018011217,2018-01-12,2018-01-12 17:00:00,2018,1,12,17,1,2,Friday,January,false
2018011218,2018-01-12,2018-01-12 18:00:00,2018,1,12,18,1,2,Friday,January,false
2018011219,2018-01-12,2018-01-12 19:00:00,2018,1,12,19,1,2,Friday,January,false
2018011220,2018-01-12,2018-01-12 20:00:00,2018,1,12,20,1,2,Friday,January,false
2018011221,2018-01-12,2018-01-12 21:00:00,2018,1,12,21,1,2,Friday,January,false
2018011222,2018-01-12,2018-01-12 22:00:00,2018,1,12,22,1,2,Friday,January,false
2018011223,2018-01-12,2018-01-12 23:00:00,2018,1,12,23,1,2,Friday,January,false
2018011300,2018-01-13,2018-01-13 00:00:00,2018,1,13,0,1,2,Saturday,January,true
2018011301,2018-01-13,2018-01-13 01:00:00,2018,1,13,1,1,2,Saturday,January,true
2018011302,2018-01-13,2018-01-13 02:00:00,2018,1,13,2,1,2,Saturday,January,true
2018011303,2018-01-13,2018-01-13 03:00:00,2018,1,13,3,1,2,Saturday,January,true
2018011304,2018-01-13,2018-01-13 04:00:00,2018,1,13,4,1,2,Saturday,January,true
2018011305,2018-01-13,2018-01-13 05:00:00,2018,1,13,5,1,2,Saturday,January,true
2018011306,2018-01-13,2018-01-13 06:00:00,2018,1,13,6,1,2,Saturday,January,true
2018011307,2018-01-13,2018-01-13 07:00:00,2018,1,13,7,1,2,Saturday,January,true
2018011308,2018-01-13,2018-01-13 08:00:00,2018,1,13,8,1,2,Saturday,January,true
2018011309,2018-01-13,2018-01-13 09:00:00,2018,1,13,9,1,2,Saturday,January,true
2018011310,2018-01-13,2018-01-13 10:00:00,2018,1,13,10,1,2,Saturday,January,true
2018011311,2018-01-13,2018-01-13 11:00:00,2018,1,13,11,1,2,Saturday,January,true
2018011312,2018-01-13,2018-01-13 12:00:00,2018,1,13,12,1,2,Saturday,January,true
2018011313,2018-01-13,2018-01-13 13:00:00,2018,1,13,13,1,2,Saturday,January,true
2018011314,2018-01-13,2018-01-13 14:00:00,2018,1,13,14,1,2,Saturday,January,true
2018011315,2018-01-13,2018-01-13 15:00:00,2018,1,13,15,1,2,Saturday,January,true
2018011316,2018-01-13,2018-01-13 16:00:00,2018,1,13,16,1,2,Saturday,January,true
2018011317,2018-01-13,2018-01-13 17:00:00,2018,1,13,17,1,2,Saturday,January,true
2018011318,2018-01-13,2018-01-13 18:00:00,2018,1,13,18,1,2,Saturday,January,true
2018011319,2018-01-13,2018-01-13 19:00:00,2018,1,13,19,1,2,Saturday,January,true
2018011320,2018-01-13,2018-01-13 20:00:00,2018,1,13,20,1,2,Saturday,January,true
2018011321,2018-01-13,2018-01-13 21:00:00,2018,1,13,21,1,2,Saturday,January,true
2018011322,2018-01-13,2018-01-13 22:00:00,2018,1,13,22,1,2,Saturday,January,true
2018011323,2018-01-13,2018-01-13 23:00:00,2018,1,13,23,1,2,Saturday,January,true
2018011400,2018-01-14,2018-01-14 00:00:00,2018,1,14,0,1,2,Sunday,January,true
2018011401,2018-01-14,2018-01-14 01:00:00,2018,1,14,1,1,2,Sunday,January,true
2018011402,2018-01-14,2018-01-14 02:00:00,2018,1,14,2,1,2,Sunday,January,true
2018011403,2018-01-14,2018-01-14 03:00:00,2018,1,14,3,1,2,Sunday,January,true
2018011404,2018-01-14,2018-01-14 04:00:00,2018,1,14,4,1,2,Sunday,January,true
2018011405,2018-01-14,2018-01-14 05:00:00,2018,1,14,5,1,2,Sunday,January,true
2018011406,2018-01-14,2018-01-14 06:00:00,2018,1,14,6,1,2,Sunday,January,true
2018011407,2018-01-14,2018-01-14 07:00:00,2018,1,14,7,1,2,Sunday,January,true
2018011408,2018-01-14,2018-01-14 08:00:00,2018,1,14,8,1,2,Sunday,January,true
2018011409,2018-01-14,2018-01-14 09:00:00,2018,1,14,9,1,2,Sunday,January,true
2018011410,2018-01-14,2018-01-14 10:00:00,2018,1,14,10,1,2,Sunday,January,true
2018011411,2018-01-14,2018-01-14 11:00:00,2018,1,14,11,1,2,Sunday,January,true
2018011412,2018-01-14,2018-01-14 12:00:00,2018,1,14,12,1,2,Sunday,January,true
2018011413,2018-01-14,2018-01-14 13:00:00,2018,1,14,13,1,2,Sunday,January,true
2018011414,2018-01-14,2018-01-14 14:00:00,2018,1,14,14,1,2,Sunday,January,true
2018011415,2018-01-14,2018-01-14 15:00:00,2018,1,14,15,1,2,Sunday,January,true
2018011416,2018-01-14,2018-01-14 16:00:00,2018,1,14,16,1,2,Sunday,January,true
2018011417,2018-01-14,2018-01-14 17:00:00,2018,1,14,17,1,2,Sunday,January,true
2018011418,2018-01-14,2018-01-14 18:00:00,2018,1,14,18,1,2,Sunday,January,true
2018011419,2018-01-14,2018-01-14 19:00:00,2018,1,14,19,1,2,Sunday,January,true
2018011420,2018-01-14,2018-01-14 20:00:00,2018,1,14,20,1,2,Sunday,January,true
2018011421,2018-01-14,2018-01-14 21:00:00,2018,1,14,21,1,2,Sunday,January,true
2018011422,2018-01-14,2018-01-14 22:00:00,2018,1,14,22,1,2,Sunday,January,true
2018011423,2018-01-14,2018-01-14 23:00:00,2018,1,14,23,1,2,Sunday,January,true
2018011500,2018-01-15,2018-01-15 00:00:00,2018,1,15,0,1,3,Monday,January,false
2018011501,2018-01-15,2018-01-15 01:00:00,2018,1,15,1,1,3,Monday,January,false
2018011502,2018-01-15,2018-01-15 02:00:00,2018,1,15,2,1,3,Monday,January,false
2018011503,2018-01-15,2018-01-15 03:00:00,2018,1,15,3,1,3,Monday,January,false
2018011504,2018-01-15,2018-01-15 04:00:00,2018,1,15,4,1,3,Monday,January,false
2018011505,2018-01-15,2018-01-15 05:00:00,2018,1,15,5,1,3,Monday,January,false
2018011506,2018-01-15,2018-01-15 06:00:00,2018,1,15,6,1,3,Monday,January,false
2018011507,2018-01-15,2018-01-15 07:00:00,2018,1,15,7,1,3,Monday,January,false
2018011508,2018-01-15,2018-01-15 08:00:00,2018,1,15,8,1,3,Monday,January,false
2018011509,2018-01-15,2018-01-15 09:00:00,2018,1,15,9,1,3,Monday,January,false
2018011510,2018-01-15,2018-01-15 10:00:00,2018,1,15,10,1,3,Monday,January,false
2018011511,2018-01-15,2018-01-15 11:00:00,2018,1,15,11,1,3,Monday,January,false
2018011512,2018-01-15,2018-01-15 12:00:00,2018,1,15,12,1,3,Monday,January,false
2018011513,2018-01-15,2018-01-15 13:00:00,2018,1,15,13,1,3,Monday,January,false
2018011514,2018-01-15,2018-01-15 14:00:00,2018,1,15,14,1,3,Monday,January,false
2018011515,2018-01-15,2018-01-15 15:00:00,2018,1,15,15,1,3,Monday,January,false
2018011516,2018-01-15,2018-01-15 16:00:00,2018,1,15,16,1,3,Monday,January,false
2018011517,2018-01-15,2018-01-15 17:00:00,2018,1,15,17,1,3,Monday,January,false
2018011518,2018-01-15,2018-01-15 18:00:00,2018,1,15,18,1,3,Monday,January,false
2018011519,2018-01-15,2018-01-15 19:00:00,2018,1,15,19,1,3,Monday,January,false
2018011520,2018-01-15,2018-01-15 20:00:00,2018,1,15,20,1,3,Monday,January,false
2018011521,2018-01-15,2018-01-15 21:00:00,2018,1,15,21,1,3,Monday,January,false
2018011522,2018-01-15,2018-01-15 22:00:00,2018,1,15,22,1,3,Monday,January,false
2018011523,2018-01-15,2018-01-15 23:00:00,2018,1,15,23,1,3,Monday,January,false
2018011600,2018-01-16,2018-01-16 00:00:00,2018,1,16,0,1,3,Tuesday,January,false
2018011601,2018-01-16,2018-01-16 01:00:00,2018,1,16,1,1,3,Tuesday,January,false
2018011602,2018-01-16,2018-01-16 02:00:00,2018,1,16,2,1,3,Tuesday,January,false
2018011603,2018-01-16,2018-01-16 03:00:00,2018,1,16,3,1,3,Tuesday,January,false
2018011604,2018-01-16,2018-01-16 04:00:00,2018,1,16,4,1,3,Tuesday,January,false
2018011605,2018-01-16,2018-01-16 05:00:00,2018,1,16,5,1,3,Tuesday,January,false
2018011606,2018-01-16,2018-01-16 06:00:00,2018,1,16,6,1,3,Tuesday,January,false
2018011607,2018-01-16,2018-01-16 07:00:00,2018,1,16,7,1,3,Tuesday,January,false
2018011608,2018-01-16,2018-01-16 08:00:00,2018,1,16,8,1,3,Tuesday,January,false
2018011609,2018-01-16,2018-01-16 09:00:00,2018,1,16,9,1,3,Tuesday,January,false
2018011610,2018-01-16,2018-01-16 10:00:00,2018,1,16,10,1,3,Tuesday,January,false
2018011611,2018-01-16,2018-01-16 11:00:00,2018,1,16,11,1,3,Tuesday,January,false
2018011612,2018-01-16,2018-01-16 12:00:00,2018,1,16,12,1,3,Tuesday,January,false
2018011613,2018-01-16,2018-01-16 13:00:00,2018,1,16,13,1,3,Tuesday,January,false
2018011614,2018-01-16,2018-01-16 14:00:00,2018,1,16,14,1,3,Tuesday,January,false
2018011615,2018-01-16,2018-01-16 15:00:00,2018,1,16,15,1,3,Tuesday,January,false
2018011616,2018-01-16,2018-01-16 16:00:00,2018,1,16,16,1,3,Tuesday,January,false
2018011617,2018-01-16,2018-01-16 17:00:00,2018,1,16,17,1,3,Tuesday,January,false
2018011618,2018-01-16,2018-01-16 18:00:00,2018,1,16,18,1,3,Tuesday,January,false
2018011619,2018-01-16,2018-01-16 19:00:00,2018,1,16,19,1,3,Tuesday,January,false
2018011620,2018-01-16,2018-01-16 20:00:00,2018,1,16,20,1,3,Tuesday,January,false
2018011621,2018-01-16,2018-01-16 21:00:00,2018,1,16,21,1,3,Tuesday,January,false
2018011622,2018-01-16,2018-01-16 22:00:00,2018,1,16,22,1,3,Tuesday,January,false
2018011623,2018-01-16,2018-01-16 23:00:00,2018,1,16,23,1,3,Tuesday,January,false
2018011700,2018-01-17,2018-01-17 00:00:00,2018,1,17,0,1,3,Wednesday,January,false
2018011701,2018-01-17,2018-01-17 01:00:00,2018,1,17,1,1,3,Wednesday,January,false
2018011702,2018-01-17,2018-01-17 02:00:00,2018,1,17,2,1,3,Wednesday,January,false
2018011703,2018-01-17,2018-01-17 03:00:00,2018,1,17,3,1,3,Wednesday,January,false
2018011704,2018-01-17,2018-01-17 04:00:00,2018,1,17,4,1,3,Wednesday,January,false
2018011705,2018-01-17,2018-01-17 05:00:00,2018,1,17,5,1,3,Wednesday,January,false
2018011706,2018-01-17,2018-01-17 06:00:00,2018,1,17,6,1,3,Wednesday,January,false
2018011707,2018-01-17,2018-01-17 07:00:00,2018,1,17,7,1,3,Wednesday,January,false
2018011708,2018-01-17,2018-01-17 08:00:00,2018,1,17,8,1,3,Wednesday,January,false
2018011709,2018-01-17,2018-01-17 09:00:00,2018,1,17,9,1,3,Wednesday,January,false
2018011710,2018-01-17,2018-01-17 10:00:00,2018,1,17,10,1,3,Wednesday,January,false
2018011711,2018-01-17,2018-01-17 11:00:00,2018,1,17,11,1,3,Wednesday,January,false
2018011712,2018-01-17,2018-01-17 12:00:00,2018,1,17,12,1,3,Wednesday,January,false
2018011713,2018-01-17,2018-01-17 13:00:00,2018,1,17,13,1,3,Wednesday,January,false
2018011714,2018-01-17,2018-01-17 14:00:00,2018,1,17,14,1,3,Wednesday,January,false
2018011715,2018-01-17,2018-01-17 15:00:00,2018,1,17,15,1,3,Wednesday,January,false
2018011716,2018-01-17,2018-01-17 16:00:00,2018,1,17,16,1,3,Wednesday,January,false
2018011717,2018-01-17,2018-01-17 17:00:00,2018,1,17,17,1,3,Wednesday,January,false
2018011718,2018-01-17,2018-01-17 18:00:00,2018,1,17,18,1,3,Wednesday,January,false
2018011719,2018-01-17,2018-01-17 19:00:00,2018,1,17,19,1,3,Wednesday,January,false
2018011720,2018-01-17,2018-01-17 20:00:00,2018,1,17,20,1,3,Wednesday,January,false
2018011721,2018-01-17,2018-01-17 21:00:00,2018,1,17,21,1,3,Wednesday,January,false
2018011722,2018-01-17,2018-01-17 22:00:00,2018,1,17,22,1,3,Wednesday,January,false
2018011723,2018-01-17,2018-01-17 23:00:00,2018,1,17,23,1,3,Wednesday,January,false
2018011800,2018-01-18,2018-01-18 00:00:00,2018,1,18,0,1,3,Thursday,January,false
2018011801,2018-01-18,2018-01-18 01:00:00,2018,1,18,1,1,3,Thursday,January,false
2018011802,2018-01-18,2018-01-18 02:00:00,2018,1,18,2,1,3,Thursday,January,false
2018011803,2018-01-18,2018-01-18 03:00:00,2018,1,18,3,1,3,Thursday,January,false
2018011804,2018-01-18,2018-01-18 04:00:00,2018,1,18,4,1,3,Thursday,January,false
2018011805,2018-01-18,2018-01-18 05:00:00,2018,1,18,5,1,3,Thursday,January,false
2018011806,2018-01-18,2018-01-18 06:00:00,2018,1,18,6,1,3,Thursday,January,false
2018011807,2018-01-18,2018-01-18 07:00:00,2018,1,18,7,1,3,Thursday,January,false
2018011808,2018-01-18,2018-01-18 08:00:00,2018,1,18,8,1,3,Thursday,January,false
2018011809,2018-01-18,2018-01-18 09:00:00,2018,1,18,9,1,3,Thursday,January,false
2018011810,2018-01-18,2018-01-18 10:00:00,2018,1,18,10,1,3,Thursday,January,false
2018011811,2018-01-18,2018-01-18 11:00:00,2018,1,18,11,1,3,Thursday,January,false
2018011812,2018-01-18,2018-01-18 12:00:00,2018,1,18,12,1,3,Thursday,January,false
2018011813,2018-01-18,2018-01-18 13:00:00,2018,1,18,13,1,3,Thursday,January,false
2018011814,2018-01-18,2018-01-18 14:00:00,2018,1,18,14,1,3,Thursday,January,false
2018011815,2018-01-18,2018-01-18 15:00:00,2018,1,18,15,1,3,Thursday,January,false
2018011816,2018-01-18,2018-01-18 16:00:00,2018,1,18,16,1,3,Thursday,January,false
2018011817,2018-01-18,2018-01-18 17:00:00,2018,1,18,17,1,3,Thursday,January,false
2018011818,2018-01-18,2018-01-18 18:00:00,2018,1,18,18,1,3,Thursday,January,false
2018011819,2018-01-18,2018-01-18 19:00:00,2018,1,18,19,1,3,Thursday,January,false
2018011820,2018-01-18,2018-01-18 20:00:00,2018,1,18,20,1,3,Thursday,January,false
2018011821,2018-01-18,2018-01-18 21:00:00,2018,1,18,21,1,3,Thursday,January,false
2018011822,2018-01-18,2018-01-18 22:00:00,2018,1,18,22,1,3,Thursday,January,false
2018011823,2018-01-18,2018-01-18 23:00:00,2018,1,18,23,1,3,Thursday,January,false
2018011900,2018-01-19,2018-01-19 00:00:00,2018,1,19,0,1,3,Friday,January,false
2018011901,2018-01-19,2018-01-19 01:00:00,2018,1,19,1,1,3,Friday,January,false
2018011902,2018-01-19,2018-01-19 02:00:00,2018,1,19,2,1,3,Friday,January,false
2018011903,2018-01-19,2018-01-19 03:00:00,2018,1,19,3,1,3,Friday,January,false
2018011904,2018-01-19,2018-01-19 04:00:00,2018,1,19,4,1,3,Friday,January,false
2018011905,2018-01-19,2018-01-19 05:00:00,2018,1,19,5,1,3,Friday,January,false
2018011906,2018-01-19,2018-01-19 06:00:00,2018,1,19,6,1,3,Friday,January,false
2018011907,2018-01-19,2018-01-19 07:00:00,2018,1,19,7,1,3,Friday,January,false
2018011908,2018-01-19,2018-01-19 08:00:00,2018,1,19,8,1,3,Friday,January,false
2018011909,2018-01-19,2018-01-19 09:00:00,2018,1,19,9,1,3,Friday,January,false
2018011910,2018-01-19,2018-01-19 10:00:00,2018,1,19,10,1,3,Friday,January,false
2018011911,2018-01-19,2018-01-19 11:00:00,2018,1,19,11,1,3,Friday,January,false
2018011912,2018-01-19,2018-01-19 12:00:00,2018,1,19,12,1,3,Friday,January,false
2018011913,2018-01-19,2018-01-19 13:00:00,2018,1,19,13,1,3,Friday,January,false
2018011914,2018-01-19,2018-01-19 14:00:00,2018,1,19,14,1,3,Friday,January,false
2018011915,2018-01-19,2018-01-19 15:00:00,2018,1,19,15,1,3,Friday,January,false
2018011916,2018-01-19,2018-01-19 16:00:00,2018,1,19,16,1,3,Friday,January,false
2018011917,2018-01-19,2018-01-19 17:00:00,2018,1,19,17,1,3,Friday,January,false
2018011918,2018-01-19,2018-01-19 18:00:00,2018,1,19,18,1,3,Friday,January,false
2018011919,2018-01-19,2018-01-19 19:00:00,2018,1,19,19,1,3,Friday,January,false
2018011920,2018-01-19,2018-01-19 20:00:00,2018,1,19,20,1,3,Friday,January,false
2018011921,2018-01-19,2018-01-19 21:00:00,2018,1,19,21,1,3,Friday,January,false
2018011922,2018-01-19,2018-01-19 22:00:00,2018,1,19,22,1,3,Friday,January,false
2018011923,2018-01-19,2018-01-19 23:00:00,2018,1,19,23,1,3,Friday,January,false
2018012000,2018-01-20,2018-01-20 00:00:00,2018,1,20,0,1,3,Saturday,January,true
2018012001,2018-01-20,2018-01-20 01:00:00,2018,1,20,1,1,3,Saturday,January,true
2018012002,2018-01-20,2018-01-20 02:00:00,2018,1,20,2,1,3,Saturday,January,true
2018012003,2018-01-20,2018-01-20 03:00:00,2018,1,20,3,1,3,Saturday,January,true
2018012004,2018-01-20,2018-01-20 04:00:00,2018,1,20,4,1,3,Saturday,January,true
2018012005,2018-01-20,2018-01-20 05:00:00,2018,1,20,5,1,3,Saturday,January,true
2018012006,2018-01-20,2018-01-20 06:00:00,2018,1,20,6,1,3,Saturday,January,true
2018012007,2018-01-20,2018-01-20 07:00:00,2018,1,20,7,1,3,Saturday,January,true
2018012008,2018-01-20,2018-01-20 08:00:00,2018,1,20,8,1,3,Saturday,January,true
2018012009,2018-01-20,2018-01-20 09:00:00,2018,1,20,9,1,3,Saturday,January,true
2018012010,2018-01-20,2018-01-20 10:00:00,2018,1,20,10,1,3,Saturday,January,true
2018012011,2018-01-20,2018-01-20 11:00:00,2018,1,20,11,1,3,Saturday,January,true
2018012012,2018-01-20,2018-01-20 12:00:00,2018,1,20,12,1,3,Saturday,January,true
2018012013,2018-01-20,2018-01-20 13:00:00,2018,1,20,13,1,3,Saturday,January,true
2018012014,2018-01-20,2018-01-20 14:00:00,2018,1,20,14,1,3,Saturday,January,true
2018012015,2018-01-20,2018-01-20 15:00:00,2018,1,20,15,1,3,Saturday,January,true
2018012016,2018-01-20,2018-01-20 16:00:00,2018,1,20,16,1,3,Saturday,January,true
2018012017,2018-01-20,2018-01-20 17:00:00,2018,1,20,17,1,3,Saturday,January,true
2018012018,2018-01-20,2018-01-20 18:00:00,2018,1,20,18,1,3,Saturday,January,true
2018012019,2018-01-20,2018-01-20 19:00:00,2018,1,20,19,1,3,Saturday,January,true
2018012020,2018-01-20,2018-01-20 20:00:00,2018,1,20,20,1,3,Saturday,January,true
2018012021,2018-01-20,2018-01-20 21:00:00,2018,1,20,21,1,3,Saturday,January,true
2018012022,2018-01-20,2018-01-20 22:00:00,2018,1,20,22,1,3,Saturday,January,true
2018012023,2018-01-20,2018-01-20 23:00:00,2018,1,20,23,1,3,Saturday,January,true
2018012100,2018-01-21,2018-01-21 00:00:00,2018,1,21,0,1,3,Sunday,January,true
2018012101,2018-01-21,2018-01-21 01:00:00,2018,1,21,1,1,3,Sunday,January,true
2018012102,2018-01-21,2018-01-21 02:00:00,2018,1,21,2,1,3,Sunday,January,true
2018012103,2018-01-21,2018-01-21 03:00:00,2018,1,21,3,1,3,Sunday,January,true
2018012104,2018-01-21,2018-01-21 04:00:00,2018,1,21,4,1,3,Sunday,January,true
2018012105,2018-01-21,2018-01-21 05:00:00,2018,1,21,5,1,3,Sunday,January,true
2018012106,2018-01-21,2018-01-21 06:00:00,2018,1,21,6,1,3,Sunday,January,true
2018012107,2018-01-21,2018-01-21 07:00:00,2018,1,21,7,1,3,Sunday,January,true
2018012108,2018-01-21,2018-01-21 08:00:00,2018,1,21,8,1,3,Sunday,January,true
2018012109,2018-01-21,2018-01-21 09:00:00,2018,1,21,9,1,3,Sunday,January,true
2018012110,2018-01-21,2018-01-21 10:00:00,2018,1,21,10,1,3,Sunday,January,true
2018012111,2018-01-21,2018-01-21 11:00:00,2018,1,21,11,1,3,Sunday,January,true
2018012112,2018-01-21,2018-01-21 12:00:00,2018,1,21,12,1,3,Sunday,January,true
2018012113,2018-01-21,2018-01-21 13:00:00,2018,1,21,13,1,3,Sunday,January,true
2018012114,2018-01-21,2018-01-21 14:00:00,2018,1,21,14,1,3,Sunday,January,true
2018012115,2018-01-21,2018-01-21 15:00:00,2018,1,21,15,1,3,Sunday,January,true
2018012116,2018-01-21,2018-01-21 16:00:00,2018,1,21,16,1,3,Sunday,January,true
2018012117,2018-01-21,2018-01-21 17:00:00,2018,1,21,17,1,3,Sunday,January,true
2018012118,2018-01-21,2018-01-21 18:00:00,2018,1,21,18,1,3,Sunday,January,true
2018012119,2018-01-21,2018-01-21 19:00:00,2018,1,21,19,1,3,Sunday,January,true
2018012120,2018-01-21,2018-01-21 20:00:00,2018,1,21,20,1,3,Sunday,January,true
2018012121,2018-01-21,2018-01-21 21:00:00,2018,1,21,21,1,3,Sunday,January,true
2018012122,2018-01-21,2018-01-21 22:00:00,2018,1,21,22,1,3,Sunday,January,true
2018012123,2018-01-21,2018-01-21 23:00:00,2018,1,21,23,1,3,Sunday,January,true
2018012200,2018-01-22,2018-01-22 00:00:00,2018,1,22,0,1,4,Monday,January,false
2018012201,2018-01-22,2018-01-22 01:00:00,2018,1,22,1,1,4,Monday,January,false
2018012202,2018-01-22,2018-01-22 02:00:00,2018,1,22,2,1,4,Monday,January,false
2018012203,2018-01-22,2018-01-22 03:00:00,2018,1,22,3,1,4,Monday,January,false
2018012204,2018-01-22,2018-01-22 04:00:00,2018,1,22,4,1,4,Monday,January,false
2018012205,2018-01-22,2018-01-22 05:00:00,2018,1,22,5,1,4,Monday,January,false
2018012206,2018-01-22,2018-01-22 06:00:00,2018,1,22,6,1,4,Monday,January,false
2018012207,2018-01-22,2018-01-22 07:00:00,2018,1,22,7,1,4,Monday,January,false
2018012208,2018-01-22,2018-01-22 08:00:00,2018,1,22,8,1,4,Monday,January,false
2018012209,2018-01-22,2018-01-22 09:00:00,2018,1,22,9,1,4,Monday,January,false
2018012210,2018-01-22,2018-01-22 10:00:00,2018,1,22,10,1,4,Monday,January,false
2018012211,2018-01-22,2018-01-22 11:00:00,2018,1,22,11,1,4,Monday,January,false
2018012212,2018-01-22,2018-01-22 12:00:00,2018,1,22,12,1,4,Monday,January,false
2018012213,2018-01-22,2018-01-22 13:00:00,2018,1,22,13,1,4,Monday,January,false
2018012214,2018-01-22,2018-01-22 14:00:00,2018,1,22,14,1,4,Monday,January,false
2018012215,2018-01-22,2018-01-22 15:00:00,2018,1,22,15,1,4,Monday,January,false
2018012216,2018-01-22,2018-01-22 16:00:00,2018,1,22,16,1,4,Monday,January,false
2018012217,2018-01-22,2018-01-22 17:00:00,2018,1,22,17,1,4,Monday,January,false
2018012218,2018-01-22,2018-01-22 18:00:00,2018,1,22,18,1,4,Monday,January,false
2018012219,2018-01-22,2018-01-22 19:00:00,2018,1,22,19,1,4,Monday,January,false
2018012220,2018-01-22,2018-01-22 20:00:00,2018,1,22,20,1,4,Monday,January,false
2018012221,2018-01-22,2018-01-22 21:00:00,2018,1,22,21,1,4,Monday,January,false
2018012222,2018-01-22,2018-01-22 22:00:00,2018,1,22,22,1,4,Monday,January,false
2018012223,2018-01-22,2018-01-22 23:00:00,2018,1,22,23,1,4,Monday,January,false
2018012300,2018-01-23,2018-01-23 00:00:00,2018,1,23,0,1,4,Tuesday,January,false
2018012301,2018-01-23,2018-01-23 01:00:00,2018,1,23,1,1,4,Tuesday,January,false
2018012302,2018-01-23,2018-01-23 02:00:00,2018,1,23,2,1,4,Tuesday,January,false
2018012303,2018-01-23,2018-01-23 03:00:00,2018,1,23,3,1,4,Tuesday,January,false
2018012304,2018-01-23,2018-01-23 04:00:00,2018,1,23,4,1,4,Tuesday,January,false
2018012305,2018-01-23,2018-01-23 05:00:00,2018,1,23,5,1,4,Tuesday,January,false
2018012306,2018-01-23,2018-01-23 06:00:00,2018,1,23,6,1,4,Tuesday,January,false
2018012307,2018-01-23,2018-01-23 07:00:00,2018,1,23,7,1,4,Tuesday,January,false
2018012308,2018-01-23,2018-01-23 08:00:00,2018,1,23,8,1,4,Tuesday,January,false
2018012309,2018-01-23,2018-01-23 09:00:00,2018,1,23,9,1,4,Tuesday,January,false
2018012310,2018-01-23,2018-01-23 10:00:00,2018,1,23,10,1,4,Tuesday,January,false
2018012311,2018-01-23,2018-01-23 11:00:00,2018,1,23,11,1,4,Tuesday,January,false
2018012312,2018-01-23,2018-01-23 12:00:00,2018,1,23,12,1,4,Tuesday,January,false
2018012313,2018-01-23,2018-01-23 13:00:00,2018,1,23,13,1,4,Tuesday,January,false
2018012314,2018-01-23,2018-01-23 14:00:00,2018,1,23,14,1,4,Tuesday,January,false
2018012315,2018-01-23,2018-01-23 15:00:00,2018,1,23,15,1,4,Tuesday,January,false
2018012316,2018-01-23,2018-01-23 16:00:00,2018,1,23,16,1,4,Tuesday,January,false
2018012317,2018-01-23,2018-01-23 17:00:00,2018,1,23,17,1,4,Tuesday,January,false
2018012318,2018-01-23,2018-01-23 18:00:00,2018,1,23,18,1,4,Tuesday,January,false
2018012319,2018-01-23,2018-01-23 19:00:00,2018,1,23,19,1,4,Tuesday,January,false
2018012320,2018-01-23,2018-01-23 20:00:00,2018,1,23,20,1,4,Tuesday,January,false
2018012321,2018-01-23,2018-01-23 21:00:00,2018,1,23,21,1,4,Tuesday,January,false
2018012322,2018-01-23,2018-01-23 22:00:00,2018,1,23,22,1,4,Tuesday,January,false
2018012323,2018-01-23,2018-01-23 23:00:00,2018,1,23,23,1,4,Tuesday,January,false
2018012400,2018-01-24,2018-01-24 00:00:00,2018,1,24,0,1,4,Wednesday,January,false
2018012401,2018-01-24,2018-01-24 01:00:00,2018,1,24,1,1,4,Wednesday,January,false
2018012402,2018-01-24,2018-01-24 02:00:00,2018,1,24,2,1,4,Wednesday,January,false
2018012403,2018-01-24,2018-01-24 03:00:00,2018,1,24,3,1,4,Wednesday,January,false
2018012404,2018-01-24,2018-01-24 04:00:00,2018,1,24,4,1,4,Wednesday,January,false
2018012405,2018-01-24,2018-01-24 05:00:00,2018,1,24,5,1,4,Wednesday,January,false
2018012406,2018-01-24,2018-01-24 06:00:00,2018,1,24,6,1,4,Wednesday,January,false
2018012407,2018-01-24,2018-01-24 07:00:00,2018,1,24,7,1,4,Wednesday,January,false
2018012408,2018-01-24,2018-01-24 08:00:00,2018,1,24,8,1,4,Wednesday,January,false
2018012409,2018-01-24,2018-01-24 09:00:00,2018,1,24,9,1,4,Wednesday,January,false
2018012410,2018-01-24,2018-01-24 10:00:00,2018,1,24,10,1,4,Wednesday,January,false
2018012411,2018-01-24,2018-01-24 11:00:00,2018,1,24,11,1,4,Wednesday,January,false
2018012412,2018-01-24,2018-01-24 12:00:00,2018,1,24,12,1,4,Wednesday,January,false
2018012413,2018-01-24,2018-01-24 13:00:00,2018,1,24,13,1,4,Wednesday,January,false
2018012414,2018-01-24,2018-01-24 14:00:00,2018,1,24,14,1,4,Wednesday,January,false
2018012415,2018-01-24,2018-01-24 15:00:00,2018,1,24,15,1,4,Wednesday,January,false
2018012416,2018-01-24,2018-01-24 16:00:00,2018,1,24,16,1,4,Wednesday,January,false
2018012417,2018-01-24,2018-01-24 17:00:00,2018,1,24,17,1,4,Wednesday,January,false
2018012418,2018-01-24,2018-01-24 18:00:00,2018,1,24,18,1,4,Wednesday,January,false
2018012419,2018-01-24,2018-01-24 19:00:00,2018,1,24,19,1,4,Wednesday,January,false
2018012420,2018-01-24,2018-01-24 20:00:00,2018,1,24,20,1,4,Wednesday,January,false
2018012421,2018-01-24,2018-01-24 21:00:00,2018,1,24,21,1,4,Wednesday,January,false
2018012422,2018-01-24,2018-01-24 22:00:00,2018,1,24,22,1,4,Wednesday,January,false
2018012423,2018-01-24,2018-01-24 23:00:00,2018,1,24,23,1,4,Wednesday,January,false
2018012500,2018-01-25,2018-01-25 00:00:00,2018,1,25,0,1,4,Thursday,January,false
2018012501,2018-01-25,2018-01-25 01:00:00,2018,1,25,1,1,4,Thursday,January,false
2018012502,2018-01-25,2018-01-25 02:00:00,2018,1,25,2,1,4,Thursday,January,false
2018012503,2018-01-25,2018-01-25 03:00:00,2018,1,25,3,1,4,Thursday,January,false
2018012504,2018-01-25,2018-01-25 04:00:00,2018,1,25,4,1,4,Thursday,January,false
2018012505,2018-01-25,2018-01-25 05:00:00,2018,1,25,5,1,4,Thursday,January,false
2018012506,2018-01-25,2018-01-25 06:00:00,2018,1,25,6,1,4,Thursday,January,false
2018012507,2018-01-25,2018-01-25 07:00:00,2018,1,25,7,1,4,Thursday,January,false
2018012508,2018-01-25,2018-01-25 08:00:00,2018,1,25,8,1,4,Thursday,January,false
2018012509,2018-01-25,2018-01-25 09:00:00,2018,1,25,9,1,4,Thursday,January,false
2018012510,2018-01-25,2018-01-25 10:00:00,2018,1,25,10,1,4,Thursday,January,false
2018012511,2018-01-25,2018-01-25 11:00:00,2018,1,25,11,1,4,Thursday,January,false
2018012512,2018-01-25,2018-01-25 12:00:00,2018,1,25,12,1,4,Thursday,January,false
2018012513,2018-01-25,2018-01-25 13:00:00,2018,1,25,13,1,4,Thursday,January,false
2018012514,2018-01-25,2018-01-25 14:00:00,2018,1,25,14,1,4,Thursday,January,false
2018012515,2018-01-25,2018-01-25 15:00:00,2018,1,25,15,1,4,Thursday,January,false
2018012516,2018-01-25,2018-01-25 16:00:00,2018,1,25,16,1,4,Thursday,January,false
2018012517,2018-01-25,2018-01-25 17:00:00,2018,1,25,17,1,4,Thursday,January,false
2018012518,2018-01-25,2018-01-25 18:00:00,2018,1,25,18,1,4,Thursday,January,false
2018012519,2018-01-25,2018-01-25 19:00:00,2018,1,25,19,1,4,Thursday,January,false
2018012520,2018-01-25,2018-01-25 20:00:00,2018,1,25,20,1,4,Thursday,January,false
2018012521,2018-01-25,2018-01-25 21:00:00,2018,1,25,21,1,4,Thursday,January,false
2018012522,2018-01-25,2018-01-25 22:00:00,2018,1,25,22,1,4,Thursday,January,false
2018012523,2018-01-25,2018-01-25 23:00:00,2018,1,25,23,1,4,Thursday,January,false
2018012600,2018-01-26,2018-01-26 00:00:00,2018,1,26,0,1,4,Friday,January,false
2018012601,2018-01-26,2018-01-26 01:00:00,2018,1,26,1,1,4,Friday,January,false
2018012602,2018-01-26,2018-01-26 02:00:00,2018,1,26,2,1,4,Friday,January,false
2018012603,2018-01-26,2018-01-26 03:00:00,2018,1,26,3,1,4,Friday,January,false
2018012604,2018-01-26,2018-01-26 04:00:00,2018,1,26,4,1,4,Friday,January,false
2018012605,2018-01-26,2018-01-26 05:00:00,2018,1,26,5,1,4,Friday,January,false
2018012606,2018-01-26,2018-01-26 06:00:00,2018,1,26,6,1,4,Friday,January,false
2018012607,2018-01-26,2018-01-26 07:00:00,2018,1,26,7,1,4,Friday,January,false
2018012608,2018-01-26,2018-01-26 08:00:00,2018,1,26,8,1,4,Friday,January,false
2018012609,2018-01-26,2018-01-26 09:00:00,2018,1,26,9,1,4,Friday,January,false
2018012610,2018-01-26,2018-01-26 10:00:00,2018,1,26,10,1,4,Friday,January,false
2018012611,2018-01-26,2018-01-26 11:00:00,2018,1,26,11,1,4,Friday,January,false
2018012612,2018-01-26,2018-01-26 12:00:00,2018,1,26,12,1,4,Friday,January,false
2018012613,2018-01-26,2018-01-26 13:00:00,2018,1,26,13,1,4,Friday,January,false
2018012614,2018-01-26,2018-01-26 14:00:00,2018,1,26,14,1,4,Friday,January,false
2018012615,2018-01-26,2018-01-26 15:00:00,2018,1,26,15,1,4,Friday,January,false
2018012616,2018-01-26,2018-01-26 16:00:00,2018,1,26,16,1,4,Friday,January,false
2018012617,2018-01-26,2018-01-26 17:00:00,2018,1,26,17,1,4,Friday,January,false
2018012618,2018-01-26,2018-01-26 18:00:00,2018,1,26,18,1,4,Friday,January,false
2018012619,2018-01-26,2018-01-26 19:00:00,2018,1,26,19,1,4,Friday,January,false
2018012620,2018-01-26,2018-01-26 20:00:00,2018,1,26,20,1,4,Friday,January,false
2018012621,2018-01-26,2018-01-26 21:00:00,2018,1,26,21,1,4,Friday,January,false
2018012622,2018-01-26,2018-01-26 22:00:00,2018,1,26,22,1,4,Friday,January,false
2018012623,2018-01-26,2018-01-26 23:00:00,2018,1,26,23,1,4,Friday,January,false
2018012700,2018-01-27,2018-01-27 00:00:00,2018,1,27,0,1,4,Saturday,January,true
2018012701,2018-01-27,2018-01-27 01:00:00,2018,1,27,1,1,4,Saturday,January,true
2018012702,2018-01-27,2018-01-27 02:00:00,2018,1,27,2,1,4,Saturday,January,true
2018012703,2018-01-27,2018-01-27 03:00:00,2018,1,27,3,1,4,Saturday,January,true
2018012704,2018-01-27,2018-01-27 04:00:00,2018,1,27,4,1,4,Saturday,January,true
2018012705,2018-01-27,2018-01-27 05:00:00,2018,1,27,5,1,4,Saturday,January,true
2018012706,2018-01-27,2018-01-27 06:00:00,2018,1,27,6,1,4,Saturday,January,true
2018012707,2018-01-27,2018-01-27 07:00:00,2018,1,27,7,1,4,Saturday,January,true
2018012708,2018-01-27,2018-01-27 08:00:00,2018,1,27,8,1,4,Saturday,January,true
2018012709,2018-01-27,2018-01-27 09:00:00,2018,1,27,9,1,4,Saturday,January,true
2018012710,2018-01-27,2018-01-27 10:00:00,2018,1,27,10,1,4,Saturday,January,true
2018012711,2018-01-27,2018-01-27 11:00:00,2018,1,27,11,1,4,Saturday,January,true
2018012712,2018-01-27,2018-01-27 12:00:00,2018,1,27,12,1,4,Saturday,January,true
2018012713,2018-01-27,2018-01-27 13:00:00,2018,1,27,13,1,4,Saturday,January,true
2018012714,2018-01-27,2018-01-27 14:00:00,2018,1,27,14,1,4,Saturday,January,true
2018012715,2018-01-27,2018-01-27 15:00:00,2018,1,27,15,1,4,Saturday,January,true
2018012716,2018-01-27,2018-01-27 16:00:00,2018,1,27,16,1,4,Saturday,January,true
2018012717,2018-01-27,2018-01-27 17:00:00,2018,1,27,17,1,4,Saturday,January,true
2018012718,2018-01-27,2018-01-27 18:00:00,2018,1,27,18,1,4,Saturday,January,true
2018012719,2018-01-27,2018-01-27 19:00:00,2018,1,27,19,1,4,Saturday,January,true
2018012720,2018-01-27,2018-01-27 20:00:00,2018,1,27,20,1,4,Saturday,January,true
2018012721,2018-01-27,2018-01-27 21:00:00,2018,1,27,21,1,4,Saturday,January,true
2018012722,2018-01-27,2018-01-27 22:00:00,2018,1,27,22,1,4,Saturday,January,true
2018012723,2018-01-27,2018-01-27 23:00:00,2018,1,27,23,1,4,Saturday,January,true
2018012800,2018-01-28,2018-01-28 00:00:00,2018,1,28,0,1,4,Sunday,January,true
2018012801,2018-01-28,2018-01-28 01:00:00,2018,1,28,1,1,4,Sunday,January,true
2018012802,2018-01-28,2018-01-28 02:00:00,2018,1,28,2,1,4,Sunday,January,true
2018012803,2018-01-28,2018-01-28 03:00:00,2018,1,28,3,1,4,Sunday,January,true
2018012804,2018-01-28,2018-01-28 04:00:00,2018,1,28,4,1,4,Sunday,January,true
2018012805,2018-01-28,2018-01-28 05:00:00,2018,1,28,5,1,4,Sunday,January,true
2018012806,2018-01-28,2018-01-28 06:00:00,2018,1,28,6,1,4,Sunday,January,true
2018012807,2018-01-28,2018-01-28 07:00:00,2018,1,28,7,1,4,Sunday,January,true
2018012808,2018-01-28,2018-01-28 08:00:00,2018,1,28,8,1,4,Sunday,January,true
2018012809,2018-01-28,2018-01-28 09:00:00,2018,1,28,9,1,4,Sunday,January,true
2018012810,2018-01-28,2018-01-28 10:00:00,2018,1,28,10,1,4,Sunday,January,true
2018012811,2018-01-28,2018-01-28 11:00:00,2018,1,28,11,1,4,Sunday,January,true
2018012812,2018-01-28,2018-01-28 12:00:00,2018,1,28,12,1,4,Sunday,January,true
2018012813,2018-01-28,2018-01-28 13:00:00,2018,1,28,13,1,4,Sunday,January,true
2018012814,2018-01-28,2018-01-28 14:00:00,2018,1,28,14,1,4,Sunday,January,true
2018012815,2018-01-28,2018-01-28 15:00:00,2018,1,28,15,1,4,Sunday,January,true
2018012816,2018-01-28,2018-01-28 16:00:00,2018,1,28,16,1,4,Sunday,January,true
2018012817,2018-01-28,2018-01-28 17:00:00,2018,1,28,17,1,4,Sunday,January,true
2018012818,2018-01-28,2018-01-28 18:00:00,2018,1,28,18,1,4,Sunday,January,true
2018012819,2018-01-28,2018-01-28 19:00:00,2018,1,28,19,1,4,Sunday,January,true
2018012820,2018-01-28,2018-01-28 20:00:00,2018,1,28,20,1,4,Sunday,January,true
2018012821,2018-01-28,2018-01-28 21:00:00,2018,1,28,21,1,4,Sunday,January,true
2018012822,2018-01-28,2018-01-28 22:00:00,2018,1,28,22,1,4,Sunday,January,true
2018012823,2018-01-28,2018-01-28 23:00:00,2018,1,28,23,1,4,Sunday,January,true
2018012900,2018-01-29,2018-01-29 00:00:00,2018,1,29,0,1,5,Monday,January,false
2018012901,2018-01-29,2018-01-29 01:00:00,2018,1,29,1,1,5,Monday,January,false
2018012902,2018-01-29,2018-01-29 02:00:00,2018,1,29,2,1,5,Monday,January,false
2018012903,2018-01-29,2018-01-29 03:00:00,2018,1,29,3,1,5,Monday,January,false
2018012904,2018-01-29,2018-01-29 04:00:00,2018,1,29,4,1,5,Monday,January,false
2018012905,2018-01-29,2018-01-29 05:00:00,2018,1,29,5,1,5,Monday,January,false
2018012906,2018-01-29,2018-01-29 06:00:00,2018,1,29,6,1,5,Monday,January,false
2018012907,2018-01-29,2018-01-29 07:00:00,2018,1,29,7,1,5,Monday,January,false
2018012908,2018-01-29,2018-01-29 08:00:00,2018,1,29,8,1,5,Monday,January,false
2018012909,2018-01-29,2018-01-29 09:00:00,2018,1,29,9,1,5,Monday,January,false
2018012910,2018-01-29,2018-01-29 10:00:00,2018,1,29,10,1,5,Monday,January,false
2018012911,2018-01-29,2018-01-29 11:00:00,2018,1,29,11,1,5,Monday,January,false
2018012912,2018-01-29,2018-01-29 12:00:00,2018,1,29,12,1,5,Monday,January,false
2018012913,2018-01-29,2018-01-29 13:00:00,2018,1,29,13,1,5,Monday,January,false
2018012914,2018-01-29,2018-01-29 14:00:00,2018,1,29,14,1,5,Monday,January,false
2018012915,2018-01-29,2018-01-29 15:00:00,2018,1,29,15,1,5,Monday,January,false
2018012916,2018-01-29,2018-01-29 16:00:00,2018,1,29,16,1,5,Monday,January,false
2018012917,2018-01-29,2018-01-29 17:00:00,2018,1,29,17,1,5,Monday,January,false
2018012918,2018-01-29,2018-01-29 18:00:00,2018,1,29,18,1,5,Monday,January,false
2018012919,2018-01-29,2018-01-29 19:00:00,2018,1,29,19,1,5,Monday,January,false
2018012920,2018-01-29,2018-01-29 20:00:00,2018,1,29,20,1,5,Monday,January,false
2018012921,2018-01-29,2018-01-29 21:00:00,2018,1,29,21,1,5,Monday,January,false
2018012922,2018-01-29,2018-01-29 22:00:00,2018,1,29,22,1,5,Monday,January,false
2018012923,2018-01-29,2018-01-29 23:00:00,2018,1,29,23,1,5,Monday,January,false
2018013000,2018-01-30,2018-01-30 00:00:00,2018,1,30,0,1,5,Tuesday,January,false
2018013001,2018-01-30,2018-01-30 01:00:00,2018,1,30,1,1,5,Tuesday,January,false
2018013002,2018-01-30,2018-01-30 02:00:00,2018,1,30,2,1,5,Tuesday,January,false
2018013003,2018-01-30,2018-01-30 03:00:00,2018,1,30,3,1,5,Tuesday,January,false
2018013004,2018-01-30,2018-01-30 04:00:00,2018,1,30,4,1,5,Tuesday,January,false
2018013005,2018-01-30,2018-01-30 05:00:00,2018,1,30,5,1,5,Tuesday,January,false
2018013006,2018-01-30,2018-01-30 06:00:00,2018,1,30,6,1,5,Tuesday,January,false
2018013007,2018-01-30,2018-01-30 07:00:00,2018,1,30,7,1,5,Tuesday,January,false
2018013008,2018-01-30,2018-01-30 08:00:00,2018,1,30,8,1,5,Tuesday,January,false
2018013009,2018-01-30,2018-01-30 09:00:00,2018,1,30,9,1,5,Tuesday,January,false
2018013010,2018-01-30,2018-01-30 10:00:00,2018,1,30,10,1,5,Tuesday,January,false
2018013011,2018-01-30,2018-01-30 11:00:00,2018,1,30,11,1,5,Tuesday,January,false
2018013012,2018-01-30,2018-01-30 12:00:00,2018,1,30,12,1,5,Tuesday,January,false
2018013013,2018-01-30,2018-01-30 13:00:00,2018,1,30,13,1,5,Tuesday,January,false
2018013014,2018-01-30,2018-01-30 14:00:00,2018,1,30,14,1,5,Tuesday,January,false
2018013015,2018-01-30,2018-01-30 15:00:00,2018,1,30,15,1,5,Tuesday,January,false
2018013016,2018-01-30,2018-01-30 16:00:00,2018,1,30,16,1,5,Tuesday,January,false
2018013017,2018-01-30,2018-01-30 17:00:00,2018,1,30,17,1,5,Tuesday,January,false
2018013018,2018-01-30,2018-01-30 18:00:00,2018,1,30,18,1,5,Tuesday,January,false
2018013019,2018-01-30,2018-01-30 19:00:00,2018,1,30,19,1,5,Tuesday,January,false
2018013020,2018-01-30,2018-01-30 20:00:00,2018,1,30,20,1,5,Tuesday,January,false
2018013021,2018-01-30,2018-01-30 21:00:00,2018,1,30,21,1,5,Tuesday,January,false
2018013022,2018-01-30,2018-01-30 22:00:00,2018,1,30,22,1,5,Tuesday,January,false
2018013023,2018-01-30,2018-01-30 23:00:00,2018,1,30,23,1,5,Tuesday,January,false
2018013100,2018-01-31,2018-01-31 00:00:00,2018,1,31,0,1,5,Wednesday,January,false
2018013101,2018-01-31,2018-01-31 01:00:00,2018,1,31,1,1,5,Wednesday,January,false
2018013102,2018-01-31,2018-01-31 02:00:00,2018,1,31,2,1,5,Wednesday,January,false
2018013103,2018-01-31,2018-01-31 03:00:00,2018,1,31,3,1,5,Wednesday,January,false
2018013104,2018-01-31,2018-01-31 04:00:00,2018,1,31,4,1,5,Wednesday,January,false
2018013105,2018-01-31,2018-01-31 05:00:00,2018,1,31,5,1,5,Wednesday,January,false
2018013106,2018-01-31,2018-01-31 06:00:00,2018,1,31,6,1,5,Wednesday,January,false
2018013107,2018-01-31,2018-01-31 07:00:00,2018,1,31,7,1,5,Wednesday,January,false
2018013108,2018-01-31,2018-01-31 08:00:00,2018,1,31,8,1,5,Wednesday,January,false
2018013109,2018-01-31,2018-01-31 09:00:00,2018,1,31,9,1,5,Wednesday,January,false
2018013110,2018-01-31,2018-01-31 10:00:00,2018,1,31,10,1,5,Wednesday,January,false
2018013111,2018-01-31,2018-01-31 11:00:00,2018,1,31,11,1,5,Wednesday,January,false
2018013112,2018-01-31,2018-01-31 12:00:00,2018,1,31,12,1,5,Wednesday,January,false
2018013113,2018-01-31,2018-01-31 13:00:00,2018,1,31,13,1,5,Wednesday,January,false
2018013114,2018-01-31,2018-01-31 14:00:00,2018,1,31,14,1,5,Wednesday,January,false
2018013115,2018-01-31,2018-01-31 15:00:00,2018,1,31,15,1,5,Wednesday,January,false
2018013116,2018-01-31,2018-01-31 16:00:00,2018,1,31,16,1,5,Wednesday,January,false
2018013117,2018-01-31,2018-01-31 17:00:00,2018,1,31,17,1,5,Wednesday,January,false
2018013118,2018-01-31,2018-01-31 18:00:00,2018,1,31,18,1,5,Wednesday,January,false
2018013119,2018-01-31,2018-01-31 19:00:00,2018,1,31,19,1,5,Wednesday,January,false
2018013120,2018-01-31,2018-01-31 20:00:00,2018,1,31,20,1,5,Wednesday,January,false
2018013121,2018-01-31,2018-01-31 21:00:00,2018,1,31,21,1,5,Wednesday,January,false
2018013122,2018-01-31,2018-01-31 22:00:00,2018,1,31,22,1,5,Wednesday,January,false
2018013123,2018-01-31,2018-01-31 23:00:00,2018,1,31,23,1,5,Wednesday,January,false
2018020100,2018-02-01,2018-02-01 00:00:00,2018,2,1,0,1,5,Thursday,February,false
2018020101,2018-02-01,2018-02-01 01:00:00,2018,2,1,1,1,5,Thursday,February,false
2018020102,2018-02-01,2018-02-01 02:00:00,2018,2,1,2,1,5,Thursday,February,false
2018020103,2018-02-01,2018-02-01 03:00:00,2018,2,1,3,1,5,Thursday,February,false
2018020104,2018-02-01,2018-02-01 04:00:00,2018,2,1,4,1,5,Thursday,February,false
2018020105,2018-02-01,2018-02-01 05:00:00,2018,2,1,5,1,5,Thursday,February,false
2018020106,2018-02-01,2018-02-01 06:00:00,2018,2,1,6,1,5,Thursday,February,false
2018020107,2018-02-01,2018-02-01 07:00:00,2018,2,1,7,1,5,Thursday,February,false
2018020108,2018-02-01,2018-02-01 08:00:00,2018,2,1,8,1,5,Thursday,February,false
2018020109,2018-02-01,2018-02-01 09:00:00,2018,2,1,9,1,5,Thursday,February,false
2018020110,2018-02-01,2018-02-01 10:00:00,2018,2,1,10,1,5,Thursday,February,false
2018020111,2018-02-01,2018-02-01 11:00:00,2018,2,1,11,1,5,Thursday,February,false
2018020112,2018-02-01,2018-02-01 12:00:00,2018,2,1,12,1,5,Thursday,February,false
2018020113,2018-02-01,2018-02-01 13:00:00,2018,2,1,13,1,5,Thursday,February,false
2018020114,2018-02-01,2018-02-01 14:00:00,2018,2,1,14,1,5,Thursday,February,false
2018020115,2018-02-01,2018-02-01 15:00:00,2018,2,1,15,1,5,Thursday,February,false
2018020116,2018-02-01,2018-02-01 16:00:00,2018,2,1,16,1,5,Thursday,February,false
2018020117,2018-02-01,2018-02-01 17:00:00,2018,2,1,17,1,5,Thursday,February,false
2018020118,2018-02-01,2018-02-01 18:00:00,2018,2,1,18,1,5,Thursday,February,false
2018020119,2018-02-01,2018-02-01 19:00:00,2018,2,1,19,1,5,Thursday,February,false
2018020120,2018-02-01,2018-02-01 20:00:00,2018,2,1,20,1,5,Thursday,February,false
2018020121,2018-02-01,2018-02-01 21:00:00,2018,2,1,21,1,5,Thursday,February,false
2018020122,2018-02-01,2018-02-01 22:00:00,2018,2,1,22,1,5,Thursday,February,false
2018020123,2018-02-01,2018-02-01 23:00:00,2018,2,1,23,1,5,Thursday,February,false
2018020200,2018-02-02,2018-02-02 00:00:00,2018,2,2,0,1,5,Friday,February,false
2018020201,2018-02-02,2018-02-02 01:00:00,2018,2,2,1,1,5,Friday,February,false
2018020202,2018-02-02,2018-02-02 02:00:00,2018,2,2,2,1,5,Friday,February,false
2018020203,2018-02-02,2018-02-02 03:00:00,2018,2,2,3,1,5,Friday,February,false
2018020204,2018-02-02,2018-02-02 04:00:00,2018,2,2,4,1,5,Friday,February,false
2018020205,2018-02-02,2018-02-02 05:00:00,2018,2,2,5,1,5,Friday,February,false
2018020206,2018-02-02,2018-02-02 06:00:00,2018,2,2,6,1,5,Friday,February,false
2018020207,2018-02-02,2018-02-02 07:00:00,2018,2,2,7,1,5,Friday,February,false
2018020208,2018-02-02,2018-02-02 08:00:00,2018,2,2,8,1,5,Friday,February,false
2018020209,2018-02-02,2018-02-02 09:00:00,2018,2,2,9,1,5,Friday,February,false
2018020210,2018-02-02,2018-02-02 10:00:00,2018,2,2,10,1,5,Friday,February,false
2018020211,2018-02-02,2018-02-02 11:00:00,2018,2,2,11,1,5,Friday,February,false
2018020212,2018-02-02,2018-02-02 12:00:00,2018,2,2,12,1,5,Friday,February,false
2018020213,2018-02-02,2018-02-02 13:00:00,2018,2,2,13,1,5,Friday,February,false
2018020214,2018-02-02,2018-02-02 14:00:00,2018,2,2,14,1,5,Friday,February,false
2018020215,2018-02-02,2018-02-02 15:00:00,2018,2,2,15,1,5,Friday,February,false
2018020216,2018-02-02,2018-02-02 16:00:00,2018,2,2,16,1,5,Friday,February,false
2018020217,2018-02-02,2018-02-02 17:00:00,2018,2,2,17,1,5,Friday,February,false
2018020218,2018-02-02,2018-02-02 18:00:00,2018,2,2,18,1,5,Friday,February,false
2018020219,2018-02-02,2018-02-02 19:00:00,2018,2,2,19,1,5,Friday,February,false
2018020220,2018-02-02,2018-02-02 20:00:00,2018,2,2,20,1,5,Friday,February,false
2018020221,2018-02-02,2018-02-02 21:00:00,2018,2,2,21,1,5,Friday,February,false
2018020222,2018-02-02,2018-02-02 22:00:00,2018,2,2,22,1,5,Friday,February,false
2018020223,2018-02-02,2018-02-02 23:00:00,2018,2,2,23,1,5,Friday,February,false
2018020300,2018-02-03,2018-02-03 00:00:00,2018,2,3,0,1,5,Saturday,February,true
2018020301,2018-02-03,2018-02-03 01:00:00,2018,2,3,1,1,5,Saturday,February,true
2018020302,2018-02-03,2018-02-03 02:00:00,2018,2,3,2,1,5,Saturday,February,true
2018020303,2018-02-03,2018-02-03 03:00:00,2018,2,3,3,1,5,Saturday,February,true
2018020304,2018-02-03,2018-02-03 04:00:00,2018,2,3,4,1,5,Saturday,February,true
2018020305,2018-02-03,2018-02-03 05:00:00,2018,2,3,5,1,5,Saturday,February,true
2018020306,2018-02-03,2018-02-03 06:00:00,2018,2,3,6,1,5,Saturday,February,true
2018020307,2018-02-03,2018-02-03 07:00:00,2018,2,3,7,1,5,Saturday,February,true
2018020308,2018-02-03,2018-02-03 08:00:00,2018,2,3,8,1,5,Saturday,February,true
2018020309,2018-02-03,2018-02-03 09:00:00,2018,2,3,9,1,5,Saturday,February,true
2018020310,2018-02-03,2018-02-03 10:00:00,2018,2,3,10,1,5,Saturday,February,true
2018020311,2018-02-03,2018-02-03 11:00:00,2018,2,3,11,1,5,Saturday,February,true
2018020312,2018-02-03,2018-02-03 12:00:00,2018,2,3,12,1,5,Saturday,February,true
2018020313,2018-02-03,2018-02-03 13:00:00,2018,2,3,13,1,5,Saturday,February,true
2018020314,2018-02-03,2018-02-03 14:00:00,2018,2,3,14,1,5,Saturday,February,true
2018020315,2018-02-03,2018-02-03 15:00:00,2018,2,3,15,1,5,Saturday,February,true
2018020316,2018-02-03,2018-02-03 16:00:00,2018,2,3,16,1,5,Saturday,February,true
2018020317,2018-02-03,2018-02-03 17:00:00,2018,2,3,17,1,5,Saturday,February,true
2018020318,2018-02-03,2018-02-03 18:00:00,2018,2,3,18,1,5,Saturday,February,true
2018020319,2018-02-03,2018-02-03 19:00:00,2018,2,3,19,1,5,Saturday,February,true
2018020320,2018-02-03,2018-02-03 20:00:00,2018,2,3,20,1,5,Saturday,February,true
2018020321,2018-02-03,2018-02-03 21:00:00,2018,2,3,21,1,5,Saturday,February,true
2018020322,2018-02-03,2018-02-03 22:00:00,2018,2,3,22,1,5,Saturday,February,true
2018020323,2018-02-03,2018-02-03 23:00:00,2018,2,3,23,1,5,Saturday,February,true
2018020400,2018-02-04,2018-02-04 00:00:00,2018,2,4,0,1,5,Sunday,February,true
2018020401,2018-02-04,2018-02-04 01:00:00,2018,2,4,1,1,5,Sunday,February,true
2018020402,2018-02-04,2018-02-04 02:00:00,2018,2,4,2,1,5,Sunday,February,true
2018020403,2018-02-04,2018-02-04 03:00:00,2018,2,4,3,1,5,Sunday,February,true
2018020404,2018-02-04,2018-02-04 04:00:00,2018,2,4,4,1,5,Sunday,February,true
2018020405,2018-02-04,2018-02-04 05:00:00,2018,2,4,5,1,5,Sunday,February,true
2018020406,2018-02-04,2018-02-04 06:00:00,2018,2,4,6,1,5,Sunday,February,true
2018020407,2018-02-04,2018-02-04 07:00:00,2018,2,4,7,1,5,Sunday,February,true
2018020408,2018-02-04,2018-02-04 08:00:00,2018,2,4,8,1,5,Sunday,February,true
2018020409,2018-02-04,2018-02-04 09:00:00,2018,2,4,9,1,5,Sunday,February,true
2018020410,2018-02-04,2018-02-04 10:00:00,2018,2,4,10,1,5,Sunday,February,true
2018020411,2018-02-04,2018-02-04 11:00:00,2018,2,4,11,1,5,Sunday,February,true
2018020412,2018-02-04,2018-02-04 12:00:00,2018,2,4,12,1,5,Sunday,February,true
2018020413,2018-02-04,2018-02-04 13:00:00,2018,2,4,13,1,5,Sunday,February,true
2018020414,2018-02-04,2018-02-04 14:00:00,2018,2,4,14,1,5,Sunday,February,true
2018020415,2018-02-04,2018-02-04 15:00:00,2018,2,4,15,1,5,Sunday,February,true
2018020416,2018-02-04,2018-02-04 16:00:00,2018,2,4,16,1,5,Sunday,February,true
2018020417,2018-02-04,2018-02-04 17:00:00,2018,2,4,17,1,5,Sunday,February,true
2018020418,2018-02-04,2018-02-04 18:00:00,2018,2,4,18,1,5,Sunday,February,true
2018020419,2018-02-04,2018-02-04 19:00:00,2018,2,4,19,1,5,Sunday,February,true
2018020420,2018-02-04,2018-02-04 20:00:00,2018,2,4,20,1,5,Sunday,February,true
2018020421,2018-02-04,2018-02-04 21:00:00,2018,2,4,21,1,5,Sunday,February,true
2018020422,2018-02-04,2018-02-04 22:00:00,2018,2,4,22,1,5,Sunday,February,true
2018020423,2018-02-04,2018-02-04 23:00:00,2018,2,4,23,1,5,Sunday,February,true
2018020500,2018-02-05,2018-02-05 00:00:00,2018,2,5,0,1,6,Monday,February,false
2018020501,2018-02-05,2018-02-05 01:00:00,2018,2,5,1,1,6,Monday,February,false
2018020502,2018-02-05,2018-02-05 02:00:00,2018,2,5,2,1,6,Monday,February,false
2018020503,2018-02-05,2018-02-05 03:00:00,2018,2,5,3,1,6,Monday,February,false
2018020504,2018-02-05,2018-02-05 04:00:00,2018,2,5,4,1,6,Monday,February,false
2018020505,2018-02-05,2018-02-05 05:00:00,2018,2,5,5,1,6,Monday,February,false
2018020506,2018-02-05,2018-02-05 06:00:00,2018,2,5,6,1,6,Monday,February,false
2018020507,2018-02-05,2018-02-05 07:00:00,2018,2,5,7,1,6,Monday,February,false
2018020508,2018-02-05,2018-02-05 08:00:00,2018,2,5,8,1,6,Monday,February,false
2018020509,2018-02-05,2018-02-05 09:00:00,2018,2,5,9,1,6,Monday,February,false
2018020510,2018-02-05,2018-02-05 10:00:00,2018,2,5,10,1,6,Monday,February,false
2018020511,2018-02-05,2018-02-05 11:00:00,2018,2,5,11,1,6,Monday,February,false
2018020512,2018-02-05,2018-02-05 12:00:00,2018,2,5,12,1,6,Monday,February,false
2018020513,2018-02-05,2018-02-05 13:00:00,2018,2,5,13,1,6,Monday,February,false
2018020514,2018-02-05,2018-02-05 14:00:00,2018,2,5,14,1,6,Monday,February,false
2018020515,2018-02-05,2018-02-05 15:00:00,2018,2,5,15,1,6,Monday,February,false
2018020516,2018-02-05,2018-02-05 16:00:00,2018,2,5,16,1,6,Monday,February,false
2018020517,2018-02-05,2018-02-05 17:00:00,2018,2,5,17,1,6,Monday,February,false
2018020518,2018-02-05,2018-02-05 18:00:00,2018,2,5,18,1,6,Monday,February,false
2018020519,2018-02-05,2018-02-05 19:00:00,2018,2,5,19,1,6,Monday,February,false
2018020520,2018-02-05,2018-02-05 20:00:00,2018,2,5,20,1,6,Monday,February,false
2018020521,2018-02-05,2018-02-05 21:00:00,2018,2,5,21,1,6,Monday,February,false
2018020522,2018-02-05,2018-02-05 22:00:00,2018,2,5,22,1,6,Monday,February,false
2018020523,2018-02-05,2018-02-05 23:00:00,2018,2,5,23,1,6,Monday,February,false
2018020600,2018-02-06,2018-02-06 00:00:00,2018,2,6,0,1,6,Tuesday,February,false
2018020601,2018-02-06,2018-02-06 01:00:00,2018,2,6,1,1,6,Tuesday,February,false
2018020602,2018-02-06,2018-02-06 02:00:00,2018,2,6,2,1,6,Tuesday,February,false
2018020603,2018-02-06,2018-02-06 03:00:00,2018,2,6,3,1,6,Tuesday,February,false
2018020604,2018-02-06,2018-02-06 04:00:00,2018,2,6,4,1,6,Tuesday,February,false
2018020605,2018-02-06,2018-02-06 05:00:00,2018,2,6,5,1,6,Tuesday,February,false
2018020606,2018-02-06,2018-02-06 06:00:00,2018,2,6,6,1,6,Tuesday,February,false
2018020607,2018-02-06,2018-02-06 07:00:00,2018,2,6,7,1,6,Tuesday,February,false
2018020608,2018-02-06,2018-02-06 08:00:00,2018,2,6,8,1,6,Tuesday,February,false
2018020609,2018-02-06,2018-02-06 09:00:00,2018,2,6,9,1,6,Tuesday,February,false
2018020610,2018-02-06,2018-02-06 10:00:00,2018,2,6,10,1,6,Tuesday,February,false
2018020611,2018-02-06,2018-02-06 11:00:00,2018,2,6,11,1,6,Tuesday,February,false
2018020612,2018-02-06,2018-02-06 12:00:00,2018,2,6,12,1,6,Tuesday,February,false
2018020613,2018-02-06,2018-02-06 13:00:00,2018,2,6,13,1,6,Tuesday,February,false
2018020614,2018-02-06,2018-02-06 14:00:00,2018,2,6,14,1,6,Tuesday,February,false
2018020615,2018-02-06,2018-02-06 15:00:00,2018,2,6,15,1,6,Tuesday,February,false
2018020616,2018-02-06,2018-02-06 16:00:00,2018,2,6,16,1,6,Tuesday,February,false
2018020617,2018-02-06,2018-02-06 17:00:00,2018,2,6,17,1,6,Tuesday,February,false
2018020618,2018-02-06,2018-02-06 18:00:00,2018,2,6,18,1,6,Tuesday,February,false
2018020619,2018-02-06,2018-02-06 19:00:00,2018,2,6,19,1,6,Tuesday,February,false
2018020620,2018-02-06,2018-02-06 20:00:00,2018,2,6,20,1,6,Tuesday,February,false
2018020621,2018-02-06,2018-02-06 21:00:00,2018,2,6,21,1,6,Tuesday,February,false
2018020622,2018-02-06,2018-02-06 22:00:00,2018,2,6,22,1,6,Tuesday,February,false
2018020623,2018-02-06,2018-02-06 23:00:00,2018,2,6,23,1,6,Tuesday,February,false
2018020700,2018-02-07,2018-02-07 00:00:00,2018,2,7,0,1,6,Wednesday,February,false
2018020701,2018-02-07,2018-02-07 01:00:00,2018,2,7,1,1,6,Wednesday,February,false
2018020702,2018-02-07,2018-02-07 02:00:00,2018,2,7,2,1,6,Wednesday,February,false
2018020703,2018-02-07,2018-02-07 03:00:00,2018,2,7,3,1,6,Wednesday,February,false
2018020704,2018-02-07,2018-02-07 04:00:00,2018,2,7,4,1,6,Wednesday,February,false
2018020705,2018-02-07,2018-02-07 05:00:00,2018,2,7,5,1,6,Wednesday,February,false
2018020706,2018-02-07,2018-02-07 06:00:00,2018,2,7,6,1,6,Wednesday,February,false
2018020707,2018-02-07,2018-02-07 07:00:00,2018,2,7,7,1,6,Wednesday,February,false
2018020708,2018-02-07,2018-02-07 08:00:00,2018,2,7,8,1,6,Wednesday,February,false
2018020709,2018-02-07,2018-02-07 09:00:00,2018,2,7,9,1,6,Wednesday,February,false
2018020710,2018-02-07,2018-02-07 10:00:00,2018,2,7,10,1,6,Wednesday,February,false
2018020711,2018-02-07,2018-02-07 11:00:00,2018,2,7,11,1,6,Wednesday,February,false
2018020712,2018-02-07,2018-02-07 12:00:00,2018,2,7,12,1,6,Wednesday,February,false
2018020713,2018-02-07,2018-02-07 13:00:00,2018,2,7,13,1,6,Wednesday,February,false
2018020714,2018-02-07,2018-02-07 14:00:00,2018,2,7,14,1,6,Wednesday,February,false
2018020715,2018-02-07,2018-02-07 15:00:00,2018,2,7,15,1,6,Wednesday,February,false
2018020716,2018-02-07,2018-02-07 16:00:00,2018,2,7,16,1,6,Wednesday,February,false
2018020717,2018-02-07,2018-02-07 17:00:00,2018,2,7,17,1,6,Wednesday,February,false
2018020718,2018-02-07,2018-02-07 18:00:00,2018,2,7,18,1,6,Wednesday,February,false
2018020719,2018-02-07,2018-02-07 19:00:00,2018,2,7,19,1,6,Wednesday,February,false
2018020720,2018-02-07,2018-02-07 20:00:00,2018,2,7,20,1,6,Wednesday,February,false
2018020721,2018-02-07,2018-02-07 21:00:00,2018,2,7,21,1,6,Wednesday,February,false
2018020722,2018-02-07,2018-02-07 22:00:00,2018,2,7,22,1,6,Wednesday,February,false
2018020723,2018-02-07,2018-02-07 23:00:00,2018,2,7,23,1,6,Wednesday,February,false
2018020800,2018-02-08,2018-02-08 00:00:00,2018,2,8,0,1,6,Thursday,February,false
2018020801,2018-02-08,2018-02-08 01:00:00,2018,2,8,1,1,6,Thursday,February,false
2018020802,2018-02-08,2018-02-08 02:00:00,2018,2,8,2,1,6,Thursday,February,false
2018020803,2018-02-08,2018-02-08 03:00:00,2018,2,8,3,1,6,Thursday,February,false
2018020804,2018-02-08,2018-02-08 04:00:00,2018,2,8,4,1,6,Thursday,February,false
2018020805,2018-02-08,2018-02-08 05:00:00,2018,2,8,5,1,6,Thursday,February,false
2018020806,2018-02-08,2018-02-08 06:00:00,2018,2,8,6,1,6,Thursday,February,false
2018020807,2018-02-08,2018-02-08 07:00:00,2018,2,8,7,1,6,Thursday,February,false
2018020808,2018-02-08,2018-02-08 08:00:00,2018,2,8,8,1,6,Thursday,February,false
2018020809,2018-02-08,2018-02-08 09:00:00,2018,2,8,9,1,6,Thursday,February,false
2018020810,2018-02-08,2018-02-08 10:00:00,2018,2,8,10,1,6,Thursday,February,false
2018020811,2018-02-08,2018-02-08 11:00:00,2018,2,8,11,1,6,Thursday,February,false
2018020812,2018-02-08,2018-02-08 12:00:00,2018,2,8,12,1,6,Thursday,February,false
2018020813,2018-02-08,2018-02-08 13:00:00,2018,2,8,13,1,6,Thursday,February,false
2018020814,2018-02-08,2018-02-08 14:00:00,2018,2,8,14,1,6,Thursday,February,false
2018020815,2018-02-08,2018-02-08 15:00:00,2018,2,8,15,1,6,Thursday,February,false
2018020816,2018-02-08,2018-02-08 16:00:00,2018,2,8,16,1,6,Thursday,February,false
2018020817,2018-02-08,2018-02-08 17:00:00,2018,2,8,17,1,6,Thursday,February,false
2018020818,2018-02-08,2018-02-08 18:00:00,2018,2,8,18,1,6,Thursday,February,false
2018020819,2018-02-08,2018-02-08 19:00:00,2018,2,8,19,1,6,Thursday,February,false
2018020820,2018-02-08,2018-02-08 20:00:00,2018,2,8,20,1,6,Thursday,February,false
2018020821,2018-02-08,2018-02-08 21:00:00,2018,2,8,21,1,6,Thursday,February,false
2018020822,2018-02-08,2018-02-08 22:00:00,2018,2,8,22,1,6,Thursday,February,false
2018020823,2018-02-08,2018-02-08 23:00:00,2018,2,8,23,1,6,Thursday,February,false
2018020900,2018-02-09,2018-02-09 00:00:00,2018,2,9,0,1,6,Friday,February,false
2018020901,2018-02-09,2018-02-09 01:00:00,2018,2,9,1,1,6,Friday,February,false
2018020902,2018-02-09,2018-02-09 02:00:00,2018,2,9,2,1,6,Friday,February,false
2018020903,2018-02-09,2018-02-09 03:00:00,2018,2,9,3,1,6,Friday,February,false
2018020904,2018-02-09,2018-02-09 04:00:00,2018,2,9,4,1,6,Friday,February,false
2018020905,2018-02-09,2018-02-09 05:00:00,2018,2,9,5,1,6,Friday,February,false
2018020906,2018-02-09,2018-02-09 06:00:00,2018,2,9,6,1,6,Friday,February,false
2018020907,2018-02-09,2018-02-09 07:00:00,2018,2,9,7,1,6,Friday,February,false
2018020908,2018-02-09,2018-02-09 08:00:00,2018,2,9,8,1,6,Friday,February,false
2018020909,2018-02-09,2018-02-09 09:00:00,2018,2,9,9,1,6,Friday,February,false
2018020910,2018-02-09,2018-02-09 10:00:00,2018,2,9,10,1,6,Friday,February,false
2018020911,2018-02-09,2018-02-09 11:00:00,2018,2,9,11,1,6,Friday,February,false
2018020912,2018-02-09,2018-02-09 12:00:00,2018,2,9,12,1,6,Friday,February,false
2018020913,2018-02-09,2018-02-09 13:00:00,2018,2,9,13,1,6,Friday,February,false
2018020914,2018-02-09,2018-02-09 14:00:00,2018,2,9,14,1,6,Friday,February,false
2018020915,2018-02-09,2018-02-09 15:00:00,2018,2,9,15,1,6,Friday,February,false
2018020916,2018-02-09,2018-02-09 16:00:00,2018,2,9,16,1,6,Friday,February,false
2018020917,2018-02-09,2018-02-09 17:00:00,2018,2,9,17,1,6,Friday,February,false
2018020918,2018-02-09,2018-02-09 18:00:00,2018,2,9,18,1,6,Friday,February,false
2018020919,2018-02-09,2018-02-09 19:00:00,2018,2,9,19,1,6,Friday,February,false
2018020920,2018-02-09,2018-02-09 20:00:00,2018,2,9,20,1,6,Friday,February,false
2018020921,2018-02-09,2018-02-09 21:00:00,2018,2,9,21,1,6,Friday,February,false
2018020922,2018-02-09,2018-02-09 22:00:00,2018,2,9,22,1,6,Friday,February,false
2018020923,2018-02-09,2018-02-09 23:00:00,2018,2,9,23,1,6,Friday,February,false
2018021000,2018-02-10,2018-02-10 00:00:00,2018,2,10,0,1,6,Saturday,February,true
2018021001,2018-02-10,2018-02-10 01:00:00,2018,2,10,1,1,6,Saturday,February,true
2018021002,2018-02-10,2018-02-10 02:00:00,2018,2,10,2,1,6,Saturday,February,true
2018021003,2018-02-10,2018-02-10 03:00:00,2018,2,10,3,1,6,Saturday,February,true
2018021004,2018-02-10,2018-02-10 04:00:00,2018,2,10,4,1,6,Saturday,February,true
2018021005,2018-02-10,2018-02-10 05:00:00,2018,2,10,5,1,6,Saturday,February,true
2018021006,2018-02-10,2018-02-10 06:00:00,2018,2,10,6,1,6,Saturday,February,true
2018021007,2018-02-10,2018-02-10 07:00:00,2018,2,10,7,1,6,Saturday,February,true
2018021008,2018-02-10,2018-02-10 08:00:00,2018,2,10,8,1,6,Saturday,February,true
2018021009,2018-02-10,2018-02-10 09:00:00,2018,2,10,9,1,6,Saturday,February,true
2018021010,2018-02-10,2018-02-10 10:00:00,2018,2,10,10,1,6,Saturday,February,true
2018021011,2018-02-10,2018-02-10 11:00:00,2018,2,10,11,1,6,Saturday,February,true
2018021012,2018-02-10,2018-02-10 12:00:00,2018,2,10,12,1,6,Saturday,February,true
2018021013,2018-02-10,2018-02-10 13:00:00,2018,2,10,13,1,6,Saturday,February,true
2018021014,2018-02-10,2018-02-10 14:00:00,2018,2,10,14,1,6,Saturday,February,true
2018021015,2018-02-10,2018-02-10 15:00:00,2018,2,10,15,1,6,Saturday,February,true
2018021016,2018-02-10,2018-02-10 16:00:00,2018,2,10,16,1,6,Saturday,February,true
2018021017,2018-02-10,2018-02-10 17:00:00,2018,2,10,17,1,6,Saturday,February,true
2018021018,2018-02-10,2018-02-10 18:00:00,2018,2,10,18,1,6,Saturday,February,true
2018021019,2018-02-10,2018-02-10 19:00:00,2018,2,10,19,1,6,Saturday,February,true
2018021020,2018-02-10,2018-02-10 20:00:00,2018,2,10,20,1,6,Saturday,February,true
2018021021,2018-02-10,2018-02-10 21:00:00,2018,2,10,21,1,6,Saturday,February,true
2018021022,2018-02-10,2018-02-10 22:00:00,2018,2,10,22,1,6,Saturday,February,true
2018021023,2018-02-10,2018-02-10 23:00:00,2018,2,10,23,1,6,Saturday,February,true
2018021100,2018-02-11,2018-02-11 00:00:00,2018,2,11,0,1,6,Sunday,February,true
2018021101,2018-02-11,2018-02-11 01:00:00,2018,2,11,1,1,6,Sunday,February,true
2018021102,2018-02-11,2018-02-11 02:00:00,2018,2,11,2,1,6,Sunday,February,true
2018021103,2018-02-11,2018-02-11 03:00:00,2018,2,11,3,1,6,Sunday,February,true
2018021104,2018-02-11,2018-02-11 04:00:00,2018,2,11,4,1,6,Sunday,February,true
2018021105,2018-02-11,2018-02-11 05:00:00,2018,2,11,5,1,6,Sunday,February,true
2018021106,2018-02-11,2018-02-11 06:00:00,2018,2,11,6,1,6,Sunday,February,true
2018021107,2018-02-11,2018-02-11 07:00:00,2018,2,11,7,1,6,Sunday,February,true
2018021108,2018-02-11,2018-02-11 08:00:00,2018,2,11,8,1,6,Sunday,February,true
2018021109,2018-02-11,2018-02-11 09:00:00,2018,2,11,9,1,6,Sunday,February,true
2018021110,2018-02-11,2018-02-11 10:00:00,2018,2,11,10,1,6,Sunday,February,true
2018021111,2018-02-11,2018-02-11 11:00:00,2018,2,11,11,1,6,Sunday,February,true
2018021112,2018-02-11,2018-02-11 12:00:00,2018,2,11,12,1,6,Sunday,February,true
2018021113,2018-02-11,2018-02-11 13:00:00,2018,2,11,13,1,6,Sunday,February,true
2018021114,2018-02-11,2018-02-11 14:00:00,2018,2,11,14,1,6,Sunday,February,true
2018021115,2018-02-11,2018-02-11 15:00:00,2018,2,11,15,1,6,Sunday,February,true
2018021116,2018-02-11,2018-02-11 16:00:00,2018,2,11,16,1,6,Sunday,February,true
2018021117,2018-02-11,2018-02-11 17:00:00,2018,2,11,17,1,6,Sunday,February,true
2018021118,2018-02-11,2018-02-11 18:00:00,2018,2,11,18,1,6,Sunday,February,true
2018021119,2018-02-11,2018-02-11 19:00:00,2018,2,11,19,1,6,Sunday,February,true
2018021120,2018-02-11,2018-02-11 20:00:00,2018,2,11,20,1,6,Sunday,February,true
2018021121,2018-02-11,2018-02-11 21:00:00,2018,2,11,21,1,6,Sunday,February,true
2018021122,2018-02-11,2018-02-11 22:00:00,2018,2,11,22,1,6,Sunday,February,true
2018021123,2018-02-11,2018-02-11 23:00:00,2018,2,11,23,1,6,Sunday,February,true
2018021200,2018-02-12,2018-02-12 00:00:00,2018,2,12,0,1,7,Monday,February,false
2018021201,2018-02-12,2018-02-12 01:00:00,2018,2,12,1,1,7,Monday,February,false
2018021202,2018-02-12,2018-02-12 02:00:00,2018,2,12,2,1,7,Monday,February,false
2018021203,2018-02-12,2018-02-12 03:00:00,2018,2,12,3,1,7,Monday,February,false
2018021204,2018-02-12,2018-02-12 04:00:00,2018,2,12,4,1,7,Monday,February,false
2018021205,2018-02-12,2018-02-12 05:00:00,2018,2,12,5,1,7,Monday,February,false
2018021206,2018-02-12,2018-02-12 06:00:00,2018,2,12,6,1,7,Monday,February,false
2018021207,2018-02-12,2018-02-12 07:00:00,2018,2,12,7,1,7,Monday,February,false
2018021208,2018-02-12,2018-02-12 08:00:00,2018,2,12,8,1,7,Monday,February,false
2018021209,2018-02-12,2018-02-12 09:00:00,2018,2,12,9,1,7,Monday,February,false
2018021210,2018-02-12,2018-02-12 10:00:00,2018,2,12,10,1,7,Monday,February,false
2018021211,2018-02-12,2018-02-12 11:00:00,2018,2,12,11,1,7,Monday,February,false
2018021212,2018-02-12,2018-02-12 12:00:00,2018,2,12,12,1,7,Monday,February,false
2018021213,2018-02-12,2018-02-12 13:00:00,2018,2,12,13,1,7,Monday,February,false
2018021214,2018-02-12,2018-02-12 14:00:00,2018,2,12,14,1,7,Monday,February,false
2018021215,2018-02-12,2018-02-12 15:00:00,2018,2,12,15,1,7,Monday,February,false
2018021216,2018-02-12,2018-02-12 16:00:00,2018,2,12,16,1,7,Monday,February,false
2018021217,2018-02-12,2018-02-12 17:00:00,2018,2,12,17,1,7,Monday,February,false
2018021218,2018-02-12,2018-02-12 18:00:00,2018,2,12,18,1,7,Monday,February,false
2018021219,2018-02-12,2018-02-12 19:00:00,2018,2,12,19,1,7,Monday,February,false
2018021220,2018-02-12,2018-02-12 20:00:00,2018,2,12,20,1,7,Monday,February,false
2018021221,2018-02-12,2018-02-12 21:00:00,2018,2,12,21,1,7,Monday,February,false
2018021222,2018-02-12,2018-02-12 22:00:00,2018,2,12,22,1,7,Monday,February,false
2018021223,2018-02-12,2018-02-12 23:00:00,2018,2,12,23,1,7,Monday,February,false
2018021300,2018-02-13,2018-02-13 00:00:00,2018,2,13,0,1,7,Tuesday,February,false
2018021301,2018-02-13,2018-02-13 01:00:00,2018,2,13,1,1,7,Tuesday,February,false
2018021302,2018-02-13,2018-02-13 02:00:00,2018,2,13,2,1,7,Tuesday,February,false
2018021303,2018-02-13,2018-02-13 03:00:00,2018,2,13,3,1,7,Tuesday,February,false
2018021304,2018-02-13,2018-02-13 04:00:00,2018,2,13,4,1,7,Tuesday,February,false
2018021305,2018-02-13,2018-02-13 05:00:00,2018,2,13,5,1,7,Tuesday,February,false
2018021306,2018-02-13,2018-02-13 06:00:00,2018,2,13,6,1,7,Tuesday,February,false
2018021307,2018-02-13,2018-02-13 07:00:00,2018,2,13,7,1,7,Tuesday,February,false
2018021308,2018-02-13,2018-02-13 08:00:00,2018,2,13,8,1,7,Tuesday,February,false
2018021309,2018-02-13,2018-02-13 09:00:00,2018,2,13,9,1,7,Tuesday,February,false
2018021310,2018-02-13,2018-02-13 10:00:00,2018,2,13,10,1,7,Tuesday,February,false
2018021311,2018-02-13,2018-02-13 11:00:00,2018,2,13,11,1,7,Tuesday,February,false
2018021312,2018-02-13,2018-02-13 12:00:00,2018,2,13,12,1,7,Tuesday,February,false
2018021313,2018-02-13,2018-02-13 13:00:00,2018,2,13,13,1,7,Tuesday,February,false
2018021314,2018-02-13,2018-02-13 14:00:00,2018,2,13,14,1,7,Tuesday,February,false
2018021315,2018-02-13,2018-02-13 15:00:00,2018,2,13,15,1,7,Tuesday,February,false
2018021316,2018-02-13,2018-02-13 16:00:00,2018,2,13,16,1,7,Tuesday,February,false
2018021317,2018-02-13,2018-02-13 17:00:00,2018,2,13,17,1,7,Tuesday,February,false
2018021318,2018-02-13,2018-02-13 18:00:00,2018,2,13,18,1,7,Tuesday,February,false
2018021319,2018-02-13,2018-02-13 19:00:00,2018,2,13,19,1,7,Tuesday,February,false
2018021320,2018-02-13,2018-02-13 20:00:00,2018,2,13,20,1,7,Tuesday,February,false
2018021321,2018-02-13,2018-02-13 21:00:00,2018,2,13,21,1,7,Tuesday,February,false
2018021322,2018-02-13,2018-02-13 22:00:00,2018,2,13,22,1,7,Tuesday,February,false
2018021323,2018-02-13,2018-02-13 23:00:00,2018,2,13,23,1,7,Tuesday,February,false
2018021400,2018-02-14,2018-02-14 00:00:00,2018,2,14,0,1,7,Wednesday,February,false
2018021401,2018-02-14,2018-02-14 01:00:00,2018,2,14,1,1,7,Wednesday,February,false
2018021402,2018-02-14,2018-02-14 02:00:00,2018,2,14,2,1,7,Wednesday,February,false
2018021403,2018-02-14,2018-02-14 03:00:00,2018,2,14,3,1,7,Wednesday,February,false
2018021404,2018-02-14,2018-02-14 04:00:00,2018,2,14,4,1,7,Wednesday,February,false
2018021405,2018-02-14,2018-02-14 05:00:00,2018,2,14,5,1,7,Wednesday,February,false
2018021406,2018-02-14,2018-02-14 06:00:00,2018,2,14,6,1,7,Wednesday,February,false
2018021407,2018-02-14,2018-02-14 07:00:00,2018,2,14,7,1,7,Wednesday,February,false
2018021408,2018-02-14,2018-02-14 08:00:00,2018,2,14,8,1,7,Wednesday,February,false
2018021409,2018-02-14,2018-02-14 09:00:00,2018,2,14,9,1,7,Wednesday,February,false
2018021410,2018-02-14,2018-02-14 10:00:00,2018,2,14,10,1,7,Wednesday,February,false
2018021411,2018-02-14,2018-02-14 11:00:00,2018,2,14,11,1,7,Wednesday,February,false
2018021412,2018-02-14,2018-02-14 12:00:00,2018,2,14,12,1,7,Wednesday,February,false
2018021413,2018-02-14,2018-02-14 13:00:00,2018,2,14,13,1,7,Wednesday,February,false
2018021414,2018-02-14,2018-02-14 14:00:00,2018,2,14,14,1,7,Wednesday,February,false
2018021415,2018-02-14,2018-02-14 15:00:00,2018,2,14,15,1,7,Wednesday,February,false
2018021416,2018-02-14,2018-02-14 16:00:00,2018,2,14,16,1,7,Wednesday,February,false
2018021417,2018-02-14,2018-02-14 17:00:00,2018,2,14,17,1,7,Wednesday,February,false
2018021418,2018-02-14,2018-02-14 18:00:00,2018,2,14,18,1,7,Wednesday,February,false
2018021419,2018-02-14,2018-02-14 19:00:00,2018,2,14,19,1,7,Wednesday,February,false
2018021420,2018-02-14,2018-02-14 20:00:00,2018,2,14,20,1,7,Wednesday,February,false
2018021421,2018-02-14,2018-02-14 21:00:00,2018,2,14,21,1,7,Wednesday,February,false
2018021422,2018-02-14,2018-02-14 22:00:00,2018,2,14,22,1,7,Wednesday,February,false
2018021423,2018-02-14,2018-02-14 23:00:00,2018,2,14,23,1,7,Wednesday,February,false
2018021500,2018-02-15,2018-02-15 00:00:00,2018,2,15,0,1,7,Thursday,February,false
2018021501,2018-02-15,2018-02-15 01:00:00,2018,2,15,1,1,7,Thursday,February,false
2018021502,2018-02-15,2018-02-15 02:00:00,2018,2,15,2,1,7,Thursday,February,false
2018021503,2018-02-15,2018-02-15 03:00:00,2018,2,15,3,1,7,Thursday,February,false
2018021504,2018-02-15,2018-02-15 04:00:00,2018,2,15,4,1,7,Thursday,February,false
2018021505,2018-02-15,2018-02-15 05:00:00,2018,2,15,5,1,7,Thursday,February,false
2018021506,2018-02-15,2018-02-15 06:00:00,2018,2,15,6,1,7,Thursday,February,false
2018021507,2018-02-15,2018-02-15 07:00:00,2018,2,15,7,1,7,Thursday,February,false
2018021508,2018-02-15,2018-02-15 08:00:00,2018,2,15,8,1,7,Thursday,February,false
2018021509,2018-02-15,2018-02-15 09:00:00,2018,2,15,9,1,7,Thursday,February,false
2018021510,2018-02-15,2018-02-15 10:00:00,2018,2,15,10,1,7,Thursday,February,false
2018021511,2018-02-15,2018-02-15 11:00:00,2018,2,15,11,1,7,Thursday,February,false
2018021512,2018-02-15,2018-02-15 12:00:00,2018,2,15,12,1,7,Thursday,February,false
2018021513,2018-02-15,2018-02-15 13:00:00,2018,2,15,13,1,7,Thursday,February,false
2018021514,2018-02-15,2018-02-15 14:00:00,2018,2,15,14,1,7,Thursday,February,false
2018021515,2018-02-15,2018-02-15 15:00:00,2018,2,15,15,1,7,Thursday,February,false
2018021516,2018-02-15,2018-02-15 16:00:00,2018,2,15,16,1,7,Thursday,February,false
2018021517,2018-02-15,2018-02-15 17:00:00,2018,2,15,17,1,7,Thursday,February,false
2018021518,2018-02-15,2018-02-15 18:00:00,2018,2,15,18,1,7,Thursday,February,false
2018021519,2018-02-15,2018-02-15 19:00:00,2018,2,15,19,1,7,Thursday,February,false
2018021520,2018-02-15,2018-02-15 20:00:00,2018,2,15,20,1,7,Thursday,February,false
2018021521,2018-02-15,2018-02-15 21:00:00,2018,2,15,21,1,7,Thursday,February,false
2018021522,2018-02-15,2018-02-15 22:00:00,2018,2,15,22,1,7,Thursday,February,false
2018021523,2018-02-15,2018-02-15 23:00:00,2018,2,15,23,1,7,Thursday,February,false
2018021600,2018-02-16,2018-02-16 00:00:00,2018,2,16,0,1,7,Friday,February,false
2018021601,2018-02-16,2018-02-16 01:00:00,2018,2,16,1,1,7,Friday,February,false
2018021602,2018-02-16,2018-02-16 02:00:00,2018,2,16,2,1,7,Friday,February,false
2018021603,2018-02-16,2018-02-16 03:00:00,2018,2,16,3,1,7,Friday,February,false
2018021604,2018-02-16,2018-02-16 04:00:00,2018,2,16,4,1,7,Friday,February,false
2018021605,2018-02-16,2018-02-16 05:00:00,2018,2,16,5,1,7,Friday,February,false
2018021606,2018-02-16,2018-02-16 06:00:00,2018,2,16,6,1,7,Friday,February,false
2018021607,2018-02-16,2018-02-16 07:00:00,2018,2,16,7,1,7,Friday,February,false
2018021608,2018-02-16,2018-02-16 08:00:00,2018,2,16,8,1,7,Friday,February,false
2018021609,2018-02-16,2018-02-16 09:00:00,2018,2,16,9,1,7,Friday,February,false
2018021610,2018-02-16,2018-02-16 10:00:00,2018,2,16,10,1,7,Friday,February,false
2018021611,2018-02-16,2018-02-16 11:00:00,2018,2,16,11,1,7,Friday,February,false
2018021612,2018-02-16,2018-02-16 12:00:00,2018,2,16,12,1,7,Friday,February,false
2018021613,2018-02-16,2018-02-16 13:00:00,2018,2,16,13,1,7,Friday,February,false
2018021614,2018-02-16,2018-02-16 14:00:00,2018,2,16,14,1,7,Friday,February,false
2018021615,2018-02-16,2018-02-16 15:00:00,2018,2,16,15,1,7,Friday,February,false
2018021616,2018-02-16,2018-02-16 16:00:00,2018,2,16,16,1,7,Friday,February,false
2018021617,2018-02-16,2018-02-16 17:00:00,2018,2,16,17,1,7,Friday,February,false
2018021618,2018-02-16,2018-02-16 18:00:00,2018,2,16,18,1,7,Friday,February,false
2018021619,2018-02-16,2018-02-16 19:00:00,2018,2,16,19,1,7,Friday,February,false
2018021620,2018-02-16,2018-02-16 20:00:00,2018,2,16,20,1,7,Friday,February,false
2018021621,2018-02-16,2018-02-16 21:00:00,2018,2,16,21,1,7,Friday,February,false
2018021622,2018-02-16,2018-02-16 22:00:00,2018,2,16,22,1,7,Friday,February,false
2018021623,2018-02-16,2018-02-16 23:00:00,2018,2,16,23,1,7,Friday,February,false
2018021700,2018-02-17,2018-02-17 00:00:00,2018,2,17,0,1,7,Saturday,February,true
2018021701,2018-02-17,2018-02-17 01:00:00,2018,2,17,1,1,7,Saturday,February,true
2018021702,2018-02-17,2018-02-17 02:00:00,2018,2,17,2,1,7,Saturday,February,true
2018021703,2018-02-17,2018-02-17 03:00:00,2018,2,17,3,1,7,Saturday,February,true
2018021704,2018-02-17,2018-02-17 04:00:00,2018,2,17,4,1,7,Saturday,February,true
2018021705,2018-02-17,2018-02-17 05:00:00,2018,2,17,5,1,7,Saturday,February,true
2018021706,2018-02-17,2018-02-17 06:00:00,2018,2,17,6,1,7,Saturday,February,true
2018021707,2018-02-17,2018-02-17 07:00:00,2018,2,17,7,1,7,Saturday,February,true
2018021708,2018-02-17,2018-02-17 08:00:00,2018,2,17,8,1,7,Saturday,February,true
2018021709,2018-02-17,2018-02-17 09:00:00,2018,2,17,9,1,7,Saturday,February,true
2018021710,2018-02-17,2018-02-17 10:00:00,2018,2,17,10,1,7,Saturday,February,true
2018021711,2018-02-17,2018-02-17 11:00:00,2018,2,17,11,1,7,Saturday,February,true
2018021712,2018-02-17,2018-02-17 12:00:00,2018,2,17,12,1,7,Saturday,February,true
2018021713,2018-02-17,2018-02-17 13:00:00,2018,2,17,13,1,7,Saturday,February,true
2018021714,2018-02-17,2018-02-17 14:00:00,2018,2,17,14,1,7,Saturday,February,true
2018021715,2018-02-17,2018-02-17 15:00:00,2018,2,17,15,1,7,Saturday,February,true
2018021716,2018-02-17,2018-02-17 16:00:00,2018,2,17,16,1,7,Saturday,February,true
2018021717,2018-02-17,2018-02-17 17:00:00,2018,2,17,17,1,7,Saturday,February,true
2018021718,2018-02-17,2018-02-17 18:00:00,2018,2,17,18,1,7,Saturday,February,true
2018021719,2018-02-17,2018-02-17 19:00:00,2018,2,17,19,1,7,Saturday,February,true
2018021720,2018-02-17,2018-02-17 20:00:00,2018,2,17,20,1,7,Saturday,February,true
2018021721,2018-02-17,2018-02-17 21:00:00,2018,2,17,21,1,7,Saturday,February,true
2018021722,2018-02-17,2018-02-17 22:00:00,2018,2,17,22,1,7,Saturday,February,true
2018021723,2018-02-17,2018-02-17 23:00:00,2018,2,17,23,1,7,Saturday,February,true
2018021800,2018-02-18,2018-02-18 00:00:00,2018,2,18,0,1,7,Sunday,February,true
2018021801,2018-02-18,2018-02-18 01:00:00,2018,2,18,1,1,7,Sunday,February,true
2018021802,2018-02-18,2018-02-18 02:00:00,2018,2,18,2,1,7,Sunday,February,true
2018021803,2018-02-18,2018-02-18 03:00:00,2018,2,18,3,1,7,Sunday,February,true
2018021804,2018-02-18,2018-02-18 04:00:00,2018,2,18,4,1,7,Sunday,February,true
2018021805,2018-02-18,2018-02-18 05:00:00,2018,2,18,5,1,7,Sunday,February,true
2018021806,2018-02-18,2018-02-18 06:00:00,2018,2,18,6,1,7,Sunday,February,true
2018021807,2018-02-18,2018-02-18 07:00:00,2018,2,18,7,1,7,Sunday,February,true
2018021808,2018-02-18,2018-02-18 08:00:00,2018,2,18,8,1,7,Sunday,February,true
2018021809,2018-02-18,2018-02-18 09:00:00,2018,2,18,9,1,7,Sunday,February,true
2018021810,2018-02-18,2018-02-18 10:00:00,2018,2,18,10,1,7,Sunday,February,true
2018021811,2018-02-18,2018-02-18 11:00:00,2018,2,18,11,1,7,Sunday,February,true
2018021812,2018-02-18,2018-02-18 12:00:00,2018,2,18,12,1,7,Sunday,February,true
2018021813,2018-02-18,2018-02-18 13:00:00,2018,2,18,13,1,7,Sunday,February,true
2018021814,2018-02-18,2018-02-18 14:00:00,2018,2,18,14,1,7,Sunday,February,true
2018021815,2018-02-18,2018-02-18 15:00:00,2018,2,18,15,1,7,Sunday,February,true
2018021816,2018-02-18,2018-02-18 16:00:00,2018,2,18,16,1,7,Sunday,February,true
2018021817,2018-02-18,2018-02-18 17:00:00,2018,2,18,17,1,7,Sunday,February,true
2018021818,2018-02-18,2018-02-18 18:00:00,2018,2,18,18,1,7,Sunday,February,true
2018021819,2018-02-18,2018-02-18 19:00:00,2018,2,18,19,1,7,Sunday,February,true
2018021820,2018-02-18,2018-02-18 20:00:00,2018,2,18,20,1,7,Sunday,February,true
2018021821,2018-02-18,2018-02-18 21:00:00,2018,2,18,21,1,7,Sunday,February,true
2018021822,2018-02-18,2018-02-18 22:00:00,2018,2,18,22,1,7,Sunday,February,true
2018021823,2018-02-18,2018-02-18 23:00:00,2018,2,18,23,1,7,Sunday,February,true
2018021900,2018-02-19,2018-02-19 00:00:00,2018,2,19,0,1,8,Monday,February,false
2018021901,2018-02-19,2018-02-19 01:00:00,2018,2,19,1,1,8,Monday,February,false
2018021902,2018-02-19,2018-02-19 02:00:00,2018,2,19,2,1,8,Monday,February,false
2018021903,2018-02-19,2018-02-19 03:00:00,2018,2,19,3,1,8,Monday,February,false
2018021904,2018-02-19,2018-02-19 04:00:00,2018,2,19,4,1,8,Monday,February,false
2018021905,2018-02-19,2018-02-19 05:00:00,2018,2,19,5,1,8,Monday,February,false
2018021906,2018-02-19,2018-02-19 06:00:00,2018,2,19,6,1,8,Monday,February,false
2018021907,2018-02-19,2018-02-19 07:00:00,2018,2,19,7,1,8,Monday,February,false
2018021908,2018-02-19,2018-02-19 08:00:00,2018,2,19,8,1,8,Monday,February,false
2018021909,2018-02-19,2018-02-19 09:00:00,2018,2,19,9,1,8,Monday,February,false
2018021910,2018-02-19,2018-02-19 10:00:00,2018,2,19,10,1,8,Monday,February,false
2018021911,2018-02-19,2018-02-19 11:00:00,2018,2,19,11,1,8,Monday,February,false
2018021912,2018-02-19,2018-02-19 12:00:00,2018,2,19,12,1,8,Monday,February,false
2018021913,2018-02-19,2018-02-19 13:00:00,2018,2,19,13,1,8,Monday,February,false
2018021914,2018-02-19,2018-02-19 14:00:00,2018,2,19,14,1,8,Monday,February,false
2018021915,2018-02-19,2018-02-19 15:00:00,2018,2,19,15,1,8,Monday,February,false
2018021916,2018-02-19,2018-02-19 16:00:00,2018,2,19,16,1,8,Monday,February,false
2018021917,2018-02-19,2018-02-19 17:00:00,2018,2,19,17,1,8,Monday,February,false
2018021918,2018-02-19,2018-02-19 18:00:00,2018,2,19,18,1,8,Monday,February,false
2018021919,2018-02-19,2018-02-19 19:00:00,2018,2,19,19,1,8,Monday,February,false
2018021920,2018-02-19,2018-02-19 20:00:00,2018,2,19,20,1,8,Monday,February,false
2018021921,2018-02-19,2018-02-19 21:00:00,2018,2,19,21,1,8,Monday,February,false
2018021922,2018-02-19,2018-02-19 22:00:00,2018,2,19,22,1,8,Monday,February,false
2018021923,2018-02-19,2018-02-19 23:00:00,2018,2,19,23,1,8,Monday,February,false
2018022000,2018-02-20,2018-02-20 00:00:00,2018,2,20,0,1,8,Tuesday,February,false
2018022001,2018-02-20,2018-02-20 01:00:00,2018,2,20,1,1,8,Tuesday,February,false
2018022002,2018-02-20,2018-02-20 02:00:00,2018,2,20,2,1,8,Tuesday,February,false
2018022003,2018-02-20,2018-02-20 03:00:00,2018,2,20,3,1,8,Tuesday,February,false
2018022004,2018-02-20,2018-02-20 04:00:00,2018,2,20,4,1,8,Tuesday,February,false
2018022005,2018-02-20,2018-02-20 05:00:00,2018,2,20,5,1,8,Tuesday,February,false
2018022006,2018-02-20,2018-02-20 06:00:00,2018,2,20,6,1,8,Tuesday,February,false
2018022007,2018-02-20,2018-02-20 07:00:00,2018,2,20,7,1,8,Tuesday,February,false
2018022008,2018-02-20,2018-02-20 08:00:00,2018,2,20,8,1,8,Tuesday,February,false
2018022009,2018-02-20,2018-02-20 09:00:00,2018,2,20,9,1,8,Tuesday,February,false
2018022010,2018-02-20,2018-02-20 10:00:00,2018,2,20,10,1,8,Tuesday,February,false
2018022011,2018-02-20,2018-02-20 11:00:00,2018,2,20,11,1,8,Tuesday,February,false
2018022012,2018-02-20,2018-02-20 12:00:00,2018,2,20,12,1,8,Tuesday,February,false
2018022013,2018-02-20,2018-02-20 13:00:00,2018,2,20,13,1,8,Tuesday,February,false
2018022014,2018-02-20,2018-02-20 14:00:00,2018,2,20,14,1,8,Tuesday,February,false
2018022015,2018-02-20,2018-02-20 15:00:00,2018,2,20,15,1,8,Tuesday,February,false
2018022016,2018-02-20,2018-02-20 16:00:00,2018,2,20,16,1,8,Tuesday,February,false
2018022017,2018-02-20,2018-02-20 17:00:00,2018,2,20,17,1,8,Tuesday,February,false
2018022018,2018-02-20,2018-02-20 18:00:00,2018,2,20,18,1,8,Tuesday,February,false
2018022019,2018-02-20,2018-02-20 19:00:00,2018,2,20,19,1,8,Tuesday,February,false
2018022020,2018-02-20,2018-02-20 20:00:00,2018,2,20,20,1,8,Tuesday,February,false
2018022021,2018-02-20,2018-02-20 21:00:00,2018,2,20,21,1,8,Tuesday,February,false
2018022022,2018-02-20,2018-02-20 22:00:00,2018,2,20,22,1,8,Tuesday,February,false
2018022023,2018-02-20,2018-02-20 23:00:00,2018,2,20,23,1,8,Tuesday,February,false
2018022100,2018-02-21,2018-02-21 00:00:00,2018,2,21,0,1,8,Wednesday,February,false
2018022101,2018-02-21,2018-02-21 01:00:00,2018,2,21,1,1,8,Wednesday,February,false
2018022102,2018-02-21,2018-02-21 02:00:00,2018,2,21,2,1,8,Wednesday,February,false
2018022103,2018-02-21,2018-02-21 03:00:00,2018,2,21,3,1,8,Wednesday,February,false
2018022104,2018-02-21,2018-02-21 04:00:00,2018,2,21,4,1,8,Wednesday,February,false
2018022105,2018-02-21,2018-02-21 05:00:00,2018,2,21,5,1,8,Wednesday,February,false
2018022106,2018-02-21,2018-02-21 06:00:00,2018,2,21,6,1,8,Wednesday,February,false
2018022107,2018-02-21,2018-02-21 07:00:00,2018,2,21,7,1,8,Wednesday,February,false
2018022108,2018-02-21,2018-02-21 08:00:00,2018,2,21,8,1,8,Wednesday,February,false
2018022109,2018-02-21,2018-02-21 09:00:00,2018,2,21,9,1,8,Wednesday,February,false
2018022110,2018-02-21,2018-02-21 10:00:00,2018,2,21,10,1,8,Wednesday,February,false
2018022111,2018-02-21,2018-02-21 11:00:00,2018,2,21,11,1,8,Wednesday,February,false
2018022112,2018-02-21,2018-02-21 12:00:00,2018,2,21,12,1,8,Wednesday,February,false
2018022113,2018-02-21,2018-02-21 13:00:00,2018,2,21,13,1,8,Wednesday,February,false
2018022114,2018-02-21,2018-02-21 14:00:00,2018,2,21,14,1,8,Wednesday,February,false
2018022115,2018-02-21,2018-02-21 15:00:00,2018,2,21,15,1,8,Wednesday,February,false
2018022116,2018-02-21,2018-02-21 16:00:00,2018,2,21,16,1,8,Wednesday,February,false
2018022117,2018-02-21,2018-02-21 17:00:00,2018,2,21,17,1,8,Wednesday,February,false
2018022118,2018-02-21,2018-02-21 18:00:00,2018,2,21,18,1,8,Wednesday,February,false
2018022119,2018-02-21,2018-02-21 19:00:00,2018,2,21,19,1,8,Wednesday,February,false
2018022120,2018-02-21,2018-02-21 20:00:00,2018,2,21,20,1,8,Wednesday,February,false
2018022121,2018-02-21,2018-02-21 21:00:00,2018,2,21,21,1,8,Wednesday,February,false
2018022122,2018-02-21,2018-02-21 22:00:00,2018,2,21,22,1,8,Wednesday,February,false
2018022123,2018-02-21,2018-02-21 23:00:00,2018,2,21,23,1,8,Wednesday,February,false
2018022200,2018-02-22,2018-02-22 00:00:00,2018,2,22,0,1,8,Thursday,February,false
2018022201,2018-02-22,2018-02-22 01:00:00,2018,2,22,1,1,8,Thursday,February,false
2018022202,2018-02-22,2018-02-22 02:00:00,2018,2,22,2,1,8,Thursday,February,false
2018022203,2018-02-22,2018-02-22 03:00:00,2018,2,22,3,1,8,Thursday,February,false
2018022204,2018-02-22,2018-02-22 04:00:00,2018,2,22,4,1,8,Thursday,February,false
2018022205,2018-02-22,2018-02-22 05:00:00,2018,2,22,5,1,8,Thursday,February,false
2018022206,2018-02-22,2018-02-22 06:00:00,2018,2,22,6,1,8,Thursday,February,false
2018022207,2018-02-22,2018-02-22 07:00:00,2018,2,22,7,1,8,Thursday,February,false
2018022208,2018-02-22,2018-02-22 08:00:00,2018,2,22,8,1,8,Thursday,February,false
2018022209,2018-02-22,2018-02-22 09:00:00,2018,2,22,9,1,8,Thursday,February,false
2018022210,2018-02-22,2018-02-22 10:00:00,2018,2,22,10,1,8,Thursday,February,false
2018022211,2018-02-22,2018-02-22 11:00:00,2018,2,22,11,1,8,Thursday,February,false
2018022212,2018-02-22,2018-02-22 12:00:00,2018,2,22
gitextract_qs4y4bl1/
├── .gitattributes
├── .gitignore
├── README.md
├── bdp-collect/
│ ├── .gitignore
│ ├── README.md
│ ├── build.bat
│ ├── pom.xml
│ └── src/
│ └── main/
│ ├── assembly/
│ │ ├── bin-delta.xml
│ │ └── bin.xml
│ ├── java/
│ │ └── com/
│ │ └── github/
│ │ └── bdp/
│ │ └── collect/
│ │ ├── Main.java
│ │ └── processors/
│ │ └── DateShiftProcessor.java
│ ├── profiles/
│ │ ├── cluster.properties
│ │ └── standalone.properties
│ └── resources/
│ ├── bin/
│ │ └── bdp-collect.sh
│ ├── conf/
│ │ ├── bdp-collect.properties
│ │ ├── camel-context.xml
│ │ └── log4j.properties
│ └── deploy.bat
├── bdp-dwh/
│ ├── .gitignore
│ ├── README.md
│ ├── build.bat
│ ├── pom.xml
│ └── src/
│ └── main/
│ ├── assembly/
│ │ └── bin.xml
│ ├── profiles/
│ │ ├── cluster.properties
│ │ └── standalone.properties
│ ├── resources/
│ │ ├── bin/
│ │ │ ├── bdp-dwh.sh
│ │ │ ├── dmt-infra-metric.sh
│ │ │ ├── dmt-master-data.sh
│ │ │ ├── dwh-bdp-master.sh
│ │ │ ├── dwh-bdp-metric.sh
│ │ │ ├── src-bdp-master.sh
│ │ │ ├── src-bdp-metric.sh
│ │ │ └── util.sh
│ │ ├── deploy.bat
│ │ └── lib/
│ │ ├── dmt/
│ │ │ ├── infra-metric/
│ │ │ │ ├── action/
│ │ │ │ │ ├── build-fact_metric.sql
│ │ │ │ │ ├── build-sum_metric_avg.sql
│ │ │ │ │ └── build-wide_metric_avg.sql
│ │ │ │ ├── bin/
│ │ │ │ │ └── spark-actions.sh
│ │ │ │ └── schema/
│ │ │ │ ├── fact_metric.sql
│ │ │ │ ├── sum_metric_avg.sql
│ │ │ │ └── wide_metric_avg.sql
│ │ │ └── master-data/
│ │ │ ├── action/
│ │ │ │ ├── build-dim_app.sql
│ │ │ │ ├── build-dim_hour.sql
│ │ │ │ ├── build-dim_metric_index.sql
│ │ │ │ ├── build-dim_metric_threshold.sql
│ │ │ │ └── build-dim_server.sql
│ │ │ ├── bin/
│ │ │ │ └── spark-actions.sh
│ │ │ ├── data/
│ │ │ │ └── dim_hour.csv
│ │ │ └── schema/
│ │ │ ├── dim_app.sql
│ │ │ ├── dim_hour.sql
│ │ │ ├── dim_metric_index.sql
│ │ │ ├── dim_metric_threshold.sql
│ │ │ └── dim_server.sql
│ │ ├── dwh/
│ │ │ ├── bdp-master/
│ │ │ │ ├── action/
│ │ │ │ │ ├── build-app.sql
│ │ │ │ │ ├── build-metric_index.sql
│ │ │ │ │ ├── build-metric_threshold.sql
│ │ │ │ │ └── build-server.sql
│ │ │ │ ├── bin/
│ │ │ │ │ └── spark-actions.sh
│ │ │ │ └── schema/
│ │ │ │ ├── app.sql
│ │ │ │ ├── metric_index.sql
│ │ │ │ ├── metric_threshold.sql
│ │ │ │ └── server.sql
│ │ │ └── bdp-metric/
│ │ │ ├── action/
│ │ │ │ └── build-metric.sql
│ │ │ ├── bin/
│ │ │ │ └── spark-actions.sh
│ │ │ └── schema/
│ │ │ └── metric.sql
│ │ └── src/
│ │ ├── bdp-master/
│ │ │ ├── action/
│ │ │ │ ├── build-app.sql
│ │ │ │ ├── build-metric_index.sql
│ │ │ │ ├── build-metric_threshold.sql
│ │ │ │ └── build-server.sql
│ │ │ ├── bin/
│ │ │ │ ├── spark-actions.sh
│ │ │ │ └── sqoop-actions.sh
│ │ │ └── schema/
│ │ │ ├── app.sql
│ │ │ ├── metric_index.sql
│ │ │ ├── metric_threshold.sql
│ │ │ └── server.sql
│ │ └── bdp-metric/
│ │ ├── action/
│ │ │ └── build-metric.sql
│ │ ├── bin/
│ │ │ ├── spark-actions.sh
│ │ │ └── sqoop-actions.sh
│ │ └── schema/
│ │ └── metric.sql
│ └── scala/
│ └── com.github.bdp.dwh.udf/
│ └── GenRag.scala
├── bdp-import/
│ ├── .gitignore
│ ├── README.md
│ ├── build.bat
│ ├── pom.xml
│ └── src/
│ └── main/
│ ├── assembly/
│ │ └── bin.xml
│ ├── profiles/
│ │ ├── cluster.properties
│ │ └── standalone.properties
│ └── resources/
│ ├── bin/
│ │ ├── bdp-import.sh
│ │ ├── bdp-master-import.sh
│ │ ├── bdp-metric-import.sh
│ │ └── util.sh
│ └── deploy.bat
├── bdp-master-client/
│ ├── .gitignore
│ ├── README.md
│ ├── pom.xml
│ └── src/
│ └── main/
│ ├── profiles/
│ │ ├── cluster.properties
│ │ ├── local.properties
│ │ └── standalone.properties
│ ├── resources/
│ │ ├── bdp-master-client.conf
│ │ └── log4j.properties
│ └── scala/
│ └── com/
│ └── github/
│ └── bdp/
│ └── master/
│ └── client/
│ ├── Constants.scala
│ ├── Main.scala
│ ├── domain/
│ │ ├── AlertIndex.scala
│ │ ├── App.scala
│ │ ├── MetricIndex.scala
│ │ ├── MetricThreshold.scala
│ │ ├── SEVERITY.scala
│ │ ├── Server.scala
│ │ └── TSD.scala
│ ├── service/
│ │ ├── AlertIndexService.scala
│ │ ├── AppService.scala
│ │ ├── MetricIndexService.scala
│ │ └── ServerService.scala
│ └── util/
│ ├── JsonDecoder.scala
│ └── RedisClient.scala
├── bdp-master-server/
│ ├── .gitignore
│ ├── README.md
│ ├── build.bat
│ ├── pom.xml
│ └── src/
│ └── main/
│ ├── assembly/
│ │ ├── bin-delta.xml
│ │ └── bin.xml
│ ├── java/
│ │ └── com/
│ │ └── github/
│ │ └── bdp/
│ │ └── master/
│ │ └── server/
│ │ ├── Constants.java
│ │ ├── Main.java
│ │ ├── RedisConfig.java
│ │ ├── controller/
│ │ │ ├── AlertIndexController.java
│ │ │ ├── AppController.java
│ │ │ ├── AppStartupListener.java
│ │ │ ├── MetricIndexController.java
│ │ │ └── ServerController.java
│ │ ├── domain/
│ │ │ ├── AlertIndex.java
│ │ │ ├── App.java
│ │ │ ├── MetricIndex.java
│ │ │ ├── MetricThreshold.java
│ │ │ └── Server.java
│ │ ├── repository/
│ │ │ ├── AlertIndexJpaRepository.java
│ │ │ ├── AlertIndexRedisRepository.java
│ │ │ ├── AppJpaRepository.java
│ │ │ ├── AppRedisRepository.java
│ │ │ ├── MetricIndexJpaRepository.java
│ │ │ ├── MetricIndexRedisRepository.java
│ │ │ ├── MetricThresholdRepository.java
│ │ │ ├── ServerJpaRepository.java
│ │ │ ├── ServerRedisRepository.java
│ │ │ └── impl/
│ │ │ ├── AlertIndexRedisRepositoryImpl.java
│ │ │ ├── AppRedisRepositoryImpl.java
│ │ │ ├── MetricIndexRedisRepositoryImpl.java
│ │ │ └── ServerRedisRepositoryImpl.java
│ │ └── service/
│ │ ├── AlertIndexService.java
│ │ ├── AppService.java
│ │ ├── MetricIndexService.java
│ │ ├── ServerService.java
│ │ └── impl/
│ │ ├── AlertIndexServiceImpl.java
│ │ ├── AppServiceImpl.java
│ │ ├── MetricIndexServiceImpl.java
│ │ └── ServerServiceImpl.java
│ ├── profiles/
│ │ ├── cluster.properties
│ │ └── standalone.properties
│ └── resources/
│ ├── bin/
│ │ └── bdp-master-server.sh
│ ├── conf/
│ │ ├── application.properties
│ │ ├── bdp-master-data-2018-09-01.sql
│ │ ├── bdp-master-data-2018-09-02.sql
│ │ └── logback.xml
│ └── deploy.bat
├── bdp-metric/
│ ├── .gitignore
│ ├── README.md
│ ├── build.bat
│ ├── pom.xml
│ └── src/
│ └── main/
│ ├── assembly/
│ │ └── bin.xml
│ ├── profiles/
│ │ ├── cluster.properties
│ │ └── standalone.properties
│ └── resources/
│ ├── bin/
│ │ └── bdp-metric.sh
│ ├── deploy.bat
│ └── sql/
│ ├── gen-alert.sql
│ ├── gen-cpu-usage.sql
│ ├── gen-mem-used.sql
│ └── schema.sql
├── bdp-parent/
│ ├── .gitignore
│ ├── README.md
│ └── pom.xml
├── bdp-stream/
│ ├── .gitignore
│ ├── README.md
│ ├── build.bat
│ ├── pom.xml
│ └── src/
│ └── main/
│ ├── assembly/
│ │ ├── bin-delta.xml
│ │ └── bin.xml
│ ├── profiles/
│ │ ├── cluster.properties
│ │ └── standalone.properties
│ ├── resources/
│ │ ├── bin/
│ │ │ └── bdp-stream.sh
│ │ ├── conf/
│ │ │ ├── bdp-stream.conf
│ │ │ ├── fairscheduler.xml
│ │ │ ├── hbase-site.xml
│ │ │ ├── log4j-driver.properties
│ │ │ └── log4j-executor.properties
│ │ └── deploy.bat
│ └── scala/
│ └── com/
│ └── github/
│ └── bdp/
│ └── stream/
│ ├── AlertStream.scala
│ ├── Constants.scala
│ ├── Main.scala
│ ├── MetricStream.scala
│ ├── assembler/
│ │ ├── AlertAssembler.scala
│ │ ├── MetricAssembler.scala
│ │ └── ServerStateAssembler.scala
│ ├── model/
│ │ ├── Alert.scala
│ │ ├── AlertRegistry.scala
│ │ ├── Metric.scala
│ │ └── ServerState.scala
│ ├── service/
│ │ ├── AlertService.scala
│ │ └── MetricService.scala
│ └── util/
│ ├── ForeachWriters.scala
│ ├── HBaseClient.scala
│ └── JsonDecoder.scala
└── bdp-workflow/
├── .gitignore
├── README.md
├── build.bat
├── pom.xml
└── src/
└── main/
├── assembly/
│ └── bin.xml
├── profiles/
│ ├── cluster.properties
│ └── standalone.properties
└── resources/
├── bin/
│ ├── bdp-workflow.sh
│ └── util.sh
├── deploy.bat
└── lib/
├── ds-bdp-master-daily-build/
│ ├── coordinator.xml
│ ├── sub-workflow/
│ │ ├── app.xml
│ │ ├── metric-index.xml
│ │ ├── metric-threshold.xml
│ │ └── server.xml
│ └── workflow.xml
├── ds-bdp-metric-daily-build/
│ ├── coordinator.xml
│ ├── sub-workflow/
│ │ └── metric.xml
│ └── workflow.xml
├── sj-infra-metric-daily-build/
│ ├── coordinator.xml
│ ├── sub-workflow/
│ │ ├── fact-metric.xml
│ │ ├── sum-metric-avg.xml
│ │ └── wide-metric-avg.xml
│ └── workflow.xml
└── sj-master-data-daily-build/
├── coordinator.xml
├── sub-workflow/
│ ├── app.xml
│ ├── metric-index.xml
│ ├── metric-threshold.xml
│ └── server.xml
└── workflow.xml
SYMBOL INDEX (269 symbols across 59 files)
FILE: bdp-collect/src/main/java/com/github/bdp/collect/Main.java
class Main (line 8) | public class Main {
method main (line 11) | public static void main(String[] args) throws Exception {
FILE: bdp-collect/src/main/java/com/github/bdp/collect/processors/DateShiftProcessor.java
class DateShiftProcessor (line 10) | public class DateShiftProcessor implements Processor {
method process (line 12) | @Override
FILE: bdp-dwh/src/main/resources/lib/dmt/infra-metric/schema/fact_metric.sql
type dmt (line 4) | create table if not exists dmt.fact_metric (
FILE: bdp-dwh/src/main/resources/lib/dmt/infra-metric/schema/sum_metric_avg.sql
type dmt (line 4) | create table if not exists dmt.sum_metric_avg (
FILE: bdp-dwh/src/main/resources/lib/dmt/infra-metric/schema/wide_metric_avg.sql
type dmt (line 4) | create table if not exists dmt.wide_metric_avg (
FILE: bdp-dwh/src/main/resources/lib/dmt/master-data/action/build-dim_app.sql
type updated_and_added_records (line 7) | create or replace temporary view updated_and_added_records as
FILE: bdp-dwh/src/main/resources/lib/dmt/master-data/action/build-dim_metric_index.sql
type updated_and_added_records (line 7) | create or replace temporary view updated_and_added_records as
FILE: bdp-dwh/src/main/resources/lib/dmt/master-data/action/build-dim_metric_threshold.sql
type updated_and_added_records (line 7) | create or replace temporary view updated_and_added_records as
FILE: bdp-dwh/src/main/resources/lib/dmt/master-data/action/build-dim_server.sql
type updated_and_added_records (line 7) | create or replace temporary view updated_and_added_records as
FILE: bdp-dwh/src/main/resources/lib/dmt/master-data/schema/dim_app.sql
type dmt (line 4) | create table if not exists dmt.dim_app (
FILE: bdp-dwh/src/main/resources/lib/dmt/master-data/schema/dim_hour.sql
type dmt (line 4) | create table if not exists dmt.dim_hour (
type tmp (line 23) | create table if not exists tmp.dim_hour (
FILE: bdp-dwh/src/main/resources/lib/dmt/master-data/schema/dim_metric_index.sql
type dmt (line 4) | create table if not exists dmt.dim_metric_index (
FILE: bdp-dwh/src/main/resources/lib/dmt/master-data/schema/dim_metric_threshold.sql
type dmt (line 4) | create table if not exists dmt.dim_metric_threshold (
FILE: bdp-dwh/src/main/resources/lib/dmt/master-data/schema/dim_server.sql
type dmt (line 4) | create table if not exists dmt.dim_server (
FILE: bdp-dwh/src/main/resources/lib/dwh/bdp-master/schema/app.sql
type dwh (line 4) | create table if not exists dwh.bdp_master_app (
FILE: bdp-dwh/src/main/resources/lib/dwh/bdp-master/schema/metric_index.sql
type dwh (line 4) | create table if not exists dwh.bdp_master_metric_index (
FILE: bdp-dwh/src/main/resources/lib/dwh/bdp-master/schema/metric_threshold.sql
type dwh (line 4) | create table if not exists dwh.bdp_master_metric_threshold (
FILE: bdp-dwh/src/main/resources/lib/dwh/bdp-master/schema/server.sql
type dwh (line 4) | create table if not exists dwh.bdp_master_server (
FILE: bdp-dwh/src/main/resources/lib/dwh/bdp-metric/schema/metric.sql
type dwh (line 4) | create table if not exists dwh.bdp_metric_metric (
FILE: bdp-dwh/src/main/resources/lib/src/bdp-master/schema/app.sql
type src (line 4) | create table if not exists src.bdp_master_app (
FILE: bdp-dwh/src/main/resources/lib/src/bdp-master/schema/metric_index.sql
type src (line 4) | create table if not exists src.bdp_master_metric_index (
FILE: bdp-dwh/src/main/resources/lib/src/bdp-master/schema/metric_threshold.sql
type src (line 4) | create table if not exists src.bdp_master_metric_threshold (
FILE: bdp-dwh/src/main/resources/lib/src/bdp-master/schema/server.sql
type src (line 4) | create table if not exists src.bdp_master_server (
FILE: bdp-dwh/src/main/resources/lib/src/bdp-metric/schema/metric.sql
type src (line 4) | create table if not exists src.bdp_metric_metric (
FILE: bdp-master-server/src/main/java/com/github/bdp/master/server/Constants.java
type Constants (line 3) | public interface Constants {
FILE: bdp-master-server/src/main/java/com/github/bdp/master/server/Main.java
class Main (line 7) | @SpringBootApplication
method main (line 10) | public static void main(String[] args) {
method getSpringBeanContext (line 14) | public static ConfigurableApplicationContext getSpringBeanContext() {
FILE: bdp-master-server/src/main/java/com/github/bdp/master/server/RedisConfig.java
class RedisConfig (line 13) | @Configuration
method jedisConnectionFactory (line 29) | @Bean
method stringRedisTemplate (line 40) | @Bean
FILE: bdp-master-server/src/main/java/com/github/bdp/master/server/controller/AlertIndexController.java
class AlertIndexController (line 15) | @RestController
method findAll (line 23) | @RequestMapping(method = GET, path = "/alertIndexes")
method find (line 28) | @RequestMapping(method = GET, path = "/alertIndex/{id}")
method find (line 33) | @RequestMapping(method = GET, path = "/alertIndex")
method save (line 38) | @RequestMapping(method = POST, path = "/alertIndex")
method delete (line 43) | @RequestMapping(method = DELETE, path = "/alertIndex/{id}")
FILE: bdp-master-server/src/main/java/com/github/bdp/master/server/controller/AppController.java
class AppController (line 13) | @RestController
method findAll (line 21) | @RequestMapping(method = RequestMethod.GET, path = "/apps")
method find (line 26) | @RequestMapping(method = RequestMethod.GET, path = "/bdp-metric/{id}")
method find (line 31) | @RequestMapping(method = RequestMethod.GET, path = "/bdp-metric")
method save (line 36) | @RequestMapping(method = RequestMethod.POST, path = "/bdp-metric")
method delete (line 41) | @RequestMapping(method = RequestMethod.DELETE, path = "/bdp-metric/{id}")
FILE: bdp-master-server/src/main/java/com/github/bdp/master/server/controller/AppStartupListener.java
class AppStartupListener (line 14) | @Component
method onApplicationEvent (line 31) | @EventListener
FILE: bdp-master-server/src/main/java/com/github/bdp/master/server/controller/MetricIndexController.java
class MetricIndexController (line 11) | @RestController
method findAll (line 17) | @RequestMapping(method = RequestMethod.GET, path = "/metricIndexes")
method find (line 22) | @RequestMapping(method = RequestMethod.GET, path = "/metricIndex/{id}")
method find (line 27) | @RequestMapping(method = RequestMethod.GET, path = "/metricIndex")
method save (line 32) | @RequestMapping(method = RequestMethod.POST, path = "/metricIndex")
method delete (line 37) | @RequestMapping(method = RequestMethod.DELETE, path = "/metricIndex/{i...
FILE: bdp-master-server/src/main/java/com/github/bdp/master/server/controller/ServerController.java
class ServerController (line 13) | @RestController
method findAll (line 21) | @RequestMapping(method = RequestMethod.GET, path = "/servers")
method find (line 26) | @RequestMapping(method = RequestMethod.GET, path = "/server/{id}")
method find (line 31) | @RequestMapping(method = RequestMethod.GET, path = "/server")
method save (line 36) | @RequestMapping(method = RequestMethod.POST, path = "/server")
method delete (line 41) | @RequestMapping(method = RequestMethod.DELETE, path = "/server/{id}")
FILE: bdp-master-server/src/main/java/com/github/bdp/master/server/domain/AlertIndex.java
class AlertIndex (line 8) | @Entity
method AlertIndex (line 36) | public AlertIndex() {
method AlertIndex (line 40) | public AlertIndex(Long id) {
method getId (line 47) | public Long getId() {
method setId (line 51) | public void setId(Long id) {
method getName (line 55) | public String getName() {
method setName (line 59) | public void setName(String name) {
method getSeverity (line 63) | public Integer getSeverity() {
method setSeverity (line 67) | public void setSeverity(Integer severity) {
method getCreationTime (line 71) | public Date getCreationTime() {
method setCreationTime (line 75) | public void setCreationTime(Date creationTime) {
method getUpdateTime (line 79) | public Date getUpdateTime() {
method setUpdateTime (line 83) | public void setUpdateTime(Date updateTime) {
method hashCode (line 87) | @Override
method equals (line 95) | @Override
FILE: bdp-master-server/src/main/java/com/github/bdp/master/server/domain/App.java
class App (line 8) | @Entity
method getId (line 39) | public Long getId() {
method setId (line 43) | public void setId(Long id) {
method getName (line 47) | public String getName() {
method setName (line 51) | public void setName(String name) {
method getDescription (line 55) | public String getDescription() {
method setDescription (line 59) | public void setDescription(String description) {
method getVersion (line 63) | public String getVersion() {
method setVersion (line 67) | public void setVersion(String version) {
method getCreationTime (line 71) | public Date getCreationTime() {
method setCreationTime (line 75) | public void setCreationTime(Date creationTime) {
method getUpdateTime (line 79) | public Date getUpdateTime() {
method setUpdateTime (line 83) | public void setUpdateTime(Date updateTime) {
FILE: bdp-master-server/src/main/java/com/github/bdp/master/server/domain/MetricIndex.java
class MetricIndex (line 7) | @Entity
method MetricIndex (line 37) | public MetricIndex() {
method MetricIndex (line 41) | public MetricIndex(Long id, String key, String name) {
method getId (line 47) | public Long getId() {
method setId (line 51) | public void setId(Long id) {
method getName (line 55) | public String getName() {
method setName (line 59) | public void setName(String name) {
method getDescription (line 63) | public String getDescription() {
method setDescription (line 67) | public void setDescription(String description) {
method getCategory (line 71) | public String getCategory() {
method setCategory (line 75) | public void setCategory(String category) {
method getCreationTime (line 79) | public Date getCreationTime() {
method setCreationTime (line 83) | public void setCreationTime(Date creationTime) {
method getUpdateTime (line 87) | public Date getUpdateTime() {
method setUpdateTime (line 91) | public void setUpdateTime(Date updateTime) {
FILE: bdp-master-server/src/main/java/com/github/bdp/master/server/domain/MetricThreshold.java
class MetricThreshold (line 6) | @Embeddable
method getRedThreshold (line 29) | public Integer getRedThreshold() {
method setRedThreshold (line 33) | public void setRedThreshold(Integer redThreshold) {
method getAmberThreshold (line 37) | public Integer getAmberThreshold() {
method setAmberThreshold (line 41) | public void setAmberThreshold(Integer amberThreshold) {
method getCreationTime (line 45) | public Date getCreationTime() {
method setCreationTime (line 49) | public void setCreationTime(Date creationTime) {
method getUpdateTime (line 53) | public Date getUpdateTime() {
method setUpdateTime (line 57) | public void setUpdateTime(Date updateTime) {
FILE: bdp-master-server/src/main/java/com/github/bdp/master/server/domain/Server.java
class Server (line 10) | @Entity
method getId (line 52) | public Long getId() {
method setId (line 56) | public void setId(Long id) {
method getHostname (line 60) | public String getHostname() {
method setHostname (line 64) | public void setHostname(String hostname) {
method getCpuCores (line 68) | public Integer getCpuCores() {
method setCpuCores (line 72) | public void setCpuCores(Integer cpuCores) {
method getMemory (line 76) | public Integer getMemory() {
method setMemory (line 80) | public void setMemory(Integer memory) {
method getAppId (line 84) | public Long getAppId() {
method setAppId (line 88) | public void setAppId(Long appId) {
method getMetricThresholds (line 92) | public Map<String, MetricThreshold> getMetricThresholds() {
method setMetricThresholds (line 96) | public void setMetricThresholds(Map<String, MetricThreshold> metricThr...
method getCreationTime (line 100) | public Date getCreationTime() {
method setCreationTime (line 104) | public void setCreationTime(Date creationTime) {
method getUpdateTime (line 108) | public Date getUpdateTime() {
method setUpdateTime (line 112) | public void setUpdateTime(Date updateTime) {
FILE: bdp-master-server/src/main/java/com/github/bdp/master/server/repository/AlertIndexJpaRepository.java
type AlertIndexJpaRepository (line 6) | public interface AlertIndexJpaRepository extends PagingAndSortingReposit...
FILE: bdp-master-server/src/main/java/com/github/bdp/master/server/repository/AlertIndexRedisRepository.java
type AlertIndexRedisRepository (line 7) | public interface AlertIndexRedisRepository {
method save (line 8) | void save(AlertIndex alertIndex);
method findOne (line 9) | AlertIndex findOne(Long id);
method findOne (line 10) | AlertIndex findOne(String name);
method findAll (line 11) | List<AlertIndex> findAll();
method delete (line 12) | void delete(AlertIndex alertIndex);
FILE: bdp-master-server/src/main/java/com/github/bdp/master/server/repository/AppJpaRepository.java
type AppJpaRepository (line 6) | public interface AppJpaRepository extends PagingAndSortingRepository<App...
FILE: bdp-master-server/src/main/java/com/github/bdp/master/server/repository/AppRedisRepository.java
type AppRedisRepository (line 7) | public interface AppRedisRepository {
method save (line 8) | void save(App app);
method findOne (line 9) | App findOne(Long id);
method findOne (line 10) | App findOne(String name);
method findAll (line 11) | List<App> findAll();
method delete (line 12) | void delete(App app);
FILE: bdp-master-server/src/main/java/com/github/bdp/master/server/repository/MetricIndexJpaRepository.java
type MetricIndexJpaRepository (line 6) | public interface MetricIndexJpaRepository extends PagingAndSortingReposi...
FILE: bdp-master-server/src/main/java/com/github/bdp/master/server/repository/MetricIndexRedisRepository.java
type MetricIndexRedisRepository (line 7) | public interface MetricIndexRedisRepository {
method save (line 8) | void save(MetricIndex metricIndex);
method findOne (line 9) | MetricIndex findOne(Long id);
method findOne (line 10) | MetricIndex findOne(String name);
method findAll (line 11) | List<MetricIndex> findAll();
method delete (line 12) | void delete(MetricIndex metricIndex);
FILE: bdp-master-server/src/main/java/com/github/bdp/master/server/repository/MetricThresholdRepository.java
type MetricThresholdRepository (line 6) | public interface MetricThresholdRepository extends PagingAndSortingRepos...
FILE: bdp-master-server/src/main/java/com/github/bdp/master/server/repository/ServerJpaRepository.java
type ServerJpaRepository (line 6) | public interface ServerJpaRepository extends PagingAndSortingRepository<...
FILE: bdp-master-server/src/main/java/com/github/bdp/master/server/repository/ServerRedisRepository.java
type ServerRedisRepository (line 7) | public interface ServerRedisRepository {
method save (line 9) | void save(Server server);
method findOne (line 11) | Server findOne(Long id);
method findOne (line 13) | Server findOne(String name);
method findAll (line 15) | List<Server> findAll();
method delete (line 17) | void delete(Server server);
FILE: bdp-master-server/src/main/java/com/github/bdp/master/server/repository/impl/AlertIndexRedisRepositoryImpl.java
class AlertIndexRedisRepositoryImpl (line 20) | @Repository
method AlertIndexRedisRepositoryImpl (line 29) | @Autowired
method init (line 34) | @PostConstruct
method buildRecKey (line 39) | private String buildRecKey(Long id) {
method buildRecKey (line 43) | private String buildRecKey(AlertIndex alertIndex) {
method buildAlertNameIdxKey (line 47) | private String buildAlertNameIdxKey(AlertIndex alertIndex) {
method buildAlertNameIdxKey (line 51) | private String buildAlertNameIdxKey(String alertName) {
method save (line 55) | @Override
method findOne (line 63) | @Override
method findOne (line 68) | @Override
method findAll (line 74) | @Override
method delete (line 92) | @Override
FILE: bdp-master-server/src/main/java/com/github/bdp/master/server/repository/impl/AppRedisRepositoryImpl.java
class AppRedisRepositoryImpl (line 20) | @Repository
method AppRedisRepositoryImpl (line 29) | @Autowired
method init (line 34) | @PostConstruct
method buildRecKey (line 39) | private String buildRecKey(Long id) {
method buildRecKey (line 43) | private String buildRecKey(App app) {
method buildAppNameIdxKey (line 47) | private String buildAppNameIdxKey(App app) {
method buildAppNameIdxKey (line 51) | private String buildAppNameIdxKey(String appName) {
method save (line 55) | @Override
method findOne (line 63) | @Override
method findOne (line 68) | @Override
method findAll (line 74) | @Override
method delete (line 92) | @Override
FILE: bdp-master-server/src/main/java/com/github/bdp/master/server/repository/impl/MetricIndexRedisRepositoryImpl.java
class MetricIndexRedisRepositoryImpl (line 20) | @Repository
method MetricIndexRedisRepositoryImpl (line 29) | @Autowired
method init (line 34) | @PostConstruct
method buildRecKey (line 39) | private String buildRecKey(Long id) {
method buildRecKey (line 43) | private String buildRecKey(MetricIndex metricIndex) {
method buildMetricNameIdxKey (line 47) | private String buildMetricNameIdxKey(MetricIndex metricIndex) {
method buildMetricNameIdxKey (line 51) | private String buildMetricNameIdxKey(String metricName) {
method save (line 55) | @Override
method findOne (line 63) | @Override
method findOne (line 68) | @Override
method findAll (line 74) | @Override
method delete (line 92) | @Override
FILE: bdp-master-server/src/main/java/com/github/bdp/master/server/repository/impl/ServerRedisRepositoryImpl.java
class ServerRedisRepositoryImpl (line 20) | @Repository
method ServerRedisRepositoryImpl (line 31) | @Autowired
method init (line 36) | @PostConstruct
method buildRecKey (line 42) | private String buildRecKey(Long id) {
method buildRecKey (line 46) | private String buildRecKey(Server server) {
method buildHostnameIdxKey (line 50) | private String buildHostnameIdxKey(Server server) {
method buildHostnameIdxKey (line 54) | private String buildHostnameIdxKey(String serverName) {
method buildAppServerJoinKey (line 58) | private String buildAppServerJoinKey(Server server) {
method save (line 63) | @Override
method findOne (line 73) | @Override
method findOne (line 78) | @Override
method findAll (line 84) | @Override
method delete (line 102) | @Override
FILE: bdp-master-server/src/main/java/com/github/bdp/master/server/service/AlertIndexService.java
type AlertIndexService (line 8) | public interface AlertIndexService {
method findOne (line 10) | AlertIndex findOne(Long id);
method findOne (line 12) | AlertIndex findOne(String alertName);
method save (line 14) | void save(AlertIndex alertIndex);
method delete (line 16) | void delete(Long id);
method findAll (line 18) | List<AlertIndex> findAll();
method loadAll (line 20) | void loadAll();
FILE: bdp-master-server/src/main/java/com/github/bdp/master/server/service/AppService.java
type AppService (line 8) | public interface AppService {
method findOne (line 10) | App findOne(Long id);
method findOne (line 12) | App findOne(String appName);
method save (line 14) | void save(App app);
method delete (line 16) | void delete(Long id);
method findAll (line 18) | List<App> findAll();
method loadAll (line 20) | void loadAll();
FILE: bdp-master-server/src/main/java/com/github/bdp/master/server/service/MetricIndexService.java
type MetricIndexService (line 8) | public interface MetricIndexService {
method findOne (line 10) | MetricIndex findOne(Long id);
method findOne (line 12) | MetricIndex findOne(String metricName);
method save (line 14) | void save(MetricIndex metricIndex);
method delete (line 16) | void delete(Long id);
method findAll (line 18) | List<MetricIndex> findAll();
method loadAll (line 20) | void loadAll();
FILE: bdp-master-server/src/main/java/com/github/bdp/master/server/service/ServerService.java
type ServerService (line 6) | public interface ServerService {
method findOne (line 8) | Server findOne(Long id);
method findOne (line 10) | Server findOne(String serverName);
method save (line 12) | void save(Server server);
method delete (line 14) | void delete(Long id);
method findAll (line 16) | List<Server> findAll();
method loadAll (line 18) | void loadAll();
FILE: bdp-master-server/src/main/java/com/github/bdp/master/server/service/impl/AlertIndexServiceImpl.java
class AlertIndexServiceImpl (line 13) | @Component("alertService")
method AlertIndexServiceImpl (line 22) | public AlertIndexServiceImpl(AlertIndexJpaRepository alertIndexJpaRepo...
method save (line 28) | @Override
method findOne (line 34) | @Override
method findOne (line 39) | @Override
method delete (line 44) | @Override
method findAll (line 51) | @Override
method loadAll (line 56) | @Override
FILE: bdp-master-server/src/main/java/com/github/bdp/master/server/service/impl/AppServiceImpl.java
class AppServiceImpl (line 13) | @Component
method AppServiceImpl (line 21) | public AppServiceImpl(AppJpaRepository appJpaRepository,
method save (line 27) | @Override
method findOne (line 33) | @Override
method findOne (line 38) | @Override
method delete (line 43) | @Override
method findAll (line 50) | @Override
method loadAll (line 55) | @Override
FILE: bdp-master-server/src/main/java/com/github/bdp/master/server/service/impl/MetricIndexServiceImpl.java
class MetricIndexServiceImpl (line 13) | @Component("metricService")
method MetricIndexServiceImpl (line 21) | public MetricIndexServiceImpl(MetricIndexJpaRepository metricIndexJpaR...
method save (line 27) | @Override
method findOne (line 33) | @Override
method findOne (line 38) | @Override
method delete (line 43) | @Override
method findAll (line 50) | @Override
method loadAll (line 55) | @Override
FILE: bdp-master-server/src/main/java/com/github/bdp/master/server/service/impl/ServerServiceImpl.java
class ServerServiceImpl (line 15) | @Service
method ServerServiceImpl (line 25) | @SuppressWarnings("unused")
method loadAll (line 32) | @Override
method findAll (line 39) | @Override
method save (line 44) | @Override
method findOne (line 51) | @Override
method findOne (line 56) | @Override
method delete (line 61) | @Override
FILE: bdp-metric/src/main/resources/sql/schema.sql
type metric (line 13) | create table if not exists metric (
type alert (line 24) | create table if not exists alert (
Condensed preview — 240 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (1,112K chars).
[
{
"path": ".gitattributes",
"chars": 34,
"preview": "*.sh -crlf linguist-language=java\n"
},
{
"path": ".gitignore",
"chars": 20,
"preview": ".idea\n/*.iml\ntarget\n"
},
{
"path": "README.md",
"chars": 12338,
"preview": "# 大数据平台工程原型(Big Data Platform Project Prototype)\n\n\n2008年Hadoop成为Apache的顶级项目,以此为开端,大数据技术迎来了十多年的持续发展,其间随着Spark的异军突起,整个大数据生"
},
{
"path": "bdp-collect/.gitignore",
"chars": 20,
"preview": ".idea\n/*.iml\ntarget\n"
},
{
"path": "bdp-collect/README.md",
"chars": 58,
"preview": "关于本子项目的部署、运行与代码细节,请参考《大数据平台架构与原型实现:数据中台建设实战》一书第5章以及第4章4.5节"
},
{
"path": "bdp-collect/build.bat",
"chars": 1526,
"preview": "@echo off\nrem A batch script to build -> deploy -> restart\nrem -- Laurence Geng\nif [%1]==[] (\n echo.\n echo Usage: "
},
{
"path": "bdp-collect/pom.xml",
"chars": 5181,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2"
},
{
"path": "bdp-collect/src/main/assembly/bin-delta.xml",
"chars": 1258,
"preview": "<assembly xmlns=\"http://maven.apache.org/ASSEMBLY/2.0.0\"\n xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\""
},
{
"path": "bdp-collect/src/main/assembly/bin.xml",
"chars": 1367,
"preview": "<assembly xmlns=\"http://maven.apache.org/ASSEMBLY/2.0.0\"\n xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\""
},
{
"path": "bdp-collect/src/main/java/com/github/bdp/collect/Main.java",
"chars": 1061,
"preview": "package com.github.bdp.collect;\n\nimport org.apache.camel.spring.SpringCamelContext;\nimport org.slf4j.Logger;\nimport org."
},
{
"path": "bdp-collect/src/main/java/com/github/bdp/collect/processors/DateShiftProcessor.java",
"chars": 665,
"preview": "package com.github.bdp.collect.processors;\n\nimport org.apache.camel.Exchange;\nimport org.apache.camel.Message;\nimport or"
},
{
"path": "bdp-collect/src/main/profiles/cluster.properties",
"chars": 971,
"preview": "# app specific configs\napp.name=${project.artifactId}\napp.host=gateway1.cluster\napp.home=${app.user.home}/${project.buil"
},
{
"path": "bdp-collect/src/main/profiles/standalone.properties",
"chars": 921,
"preview": "# app specific configs\napp.name=${project.artifactId}\napp.host=node1.cluster\napp.home=${app.user.home}/${project.build.f"
},
{
"path": "bdp-collect/src/main/resources/bin/bdp-collect.sh",
"chars": 2163,
"preview": "#!/usr/bin/env bash\n\nexport BDP_COLLECT_HOME=\"$(cd \"`dirname $(readlink -nf \"$0\")`\"/..; pwd -P)\"\n\nBDP_COLLECT_LIB_DIR=${"
},
{
"path": "bdp-collect/src/main/resources/conf/bdp-collect.properties",
"chars": 1045,
"preview": "job.cpu.sql=select id, name, hostname as hostname, value, UNIX_TIMESTAMP(timestamp) as timestamp from metric where name="
},
{
"path": "bdp-collect/src/main/resources/conf/camel-context.xml",
"chars": 7543,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<beans xmlns=\"http://www.springframework.org/schema/beans\"\n xmlns:xsi=\"http"
},
{
"path": "bdp-collect/src/main/resources/conf/log4j.properties",
"chars": 2635,
"preview": "# Root logger options\nlog4j.rootLogger=INFO, ROLLING_BY_SIZE\n\n# App root logger options\nlog4j.logger.com.github.bdp = ${"
},
{
"path": "bdp-collect/src/main/resources/deploy.bat",
"chars": 1693,
"preview": "@echo off\n\nset host=${app.host}\nset user=${app.user.name}\nset password=${app.user.password}\nset baseDir=${app.user.home}"
},
{
"path": "bdp-dwh/.gitignore",
"chars": 20,
"preview": ".idea\n/*.iml\ntarget\n"
},
{
"path": "bdp-dwh/README.md",
"chars": 323,
"preview": "关于本子项目的部署、运行与代码细节,请参考《大数据平台架构与原型实现:数据中台建设实战》一书第8章以及第4章4.5节\n\n友情提示:如果该项目提交后迟迟进入不到运行状态,请确认你的集群资源是否充足,同时可以考虑将profile文件中spark"
},
{
"path": "bdp-dwh/build.bat",
"chars": 1311,
"preview": "@echo off\nrem A batch script to build -> deploy -> restart\nrem -- Laurence Geng\nif [%1]==[] (\n echo.\n echo Usage: "
},
{
"path": "bdp-dwh/pom.xml",
"chars": 4744,
"preview": "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n xsi:sc"
},
{
"path": "bdp-dwh/src/main/assembly/bin.xml",
"chars": 1224,
"preview": "<assembly xmlns=\"http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2\"\n xmlns:xsi=\"http://www.w"
},
{
"path": "bdp-dwh/src/main/profiles/cluster.properties",
"chars": 1409,
"preview": "# app specific configs\n\ncluster.hiverserver=gateway1.cluster\n\napp.name=${project.artifactId}\napp.host=gateway1.cluster\na"
},
{
"path": "bdp-dwh/src/main/profiles/standalone.properties",
"chars": 1106,
"preview": "# app specific configs\n\ncluster.hiverserver=node1.cluster\n\napp.name=${project.artifactId}\napp.host=node1.cluster\napp.hom"
},
{
"path": "bdp-dwh/src/main/resources/bin/bdp-dwh.sh",
"chars": 8808,
"preview": "#!/usr/bin/env bash\n\nexport BDP_DWH_HOME=\"$(cd \"`dirname $(readlink -nf \"$0\")`\"/..; pwd -P)\"\n\nsource \"$BDP_DWH_HOME/bin/"
},
{
"path": "bdp-dwh/src/main/resources/bin/dmt-infra-metric.sh",
"chars": 2240,
"preview": "#!/usr/bin/env bash\n\nexport BDP_DWH_HOME=\"$(cd \"`dirname $(readlink -nf \"$0\")`\"/..; pwd -P)\"\nexport DMT_INFRA_METRIC_HOM"
},
{
"path": "bdp-dwh/src/main/resources/bin/dmt-master-data.sh",
"chars": 2879,
"preview": "#!/usr/bin/env bash\n\nexport BDP_DWH_HOME=\"$(cd \"`dirname $(readlink -nf \"$0\")`\"/..; pwd -P)\"\nexport DMT_MASTER_DATA_HOME"
},
{
"path": "bdp-dwh/src/main/resources/bin/dwh-bdp-master.sh",
"chars": 2532,
"preview": "#!/usr/bin/env bash\n\nexport BDP_DWH_HOME=\"$(cd \"`dirname $(readlink -nf \"$0\")`\"/..; pwd -P)\"\nexport DWH_BDP_MASTER_HOME="
},
{
"path": "bdp-dwh/src/main/resources/bin/dwh-bdp-metric.sh",
"chars": 1159,
"preview": "#!/usr/bin/env bash\n\nexport BDP_DWH_HOME=\"$(cd \"`dirname $(readlink -nf \"$0\")`\"/..; pwd -P)\"\nexport DWH_BDP_METRIC_HOME="
},
{
"path": "bdp-dwh/src/main/resources/bin/src-bdp-master.sh",
"chars": 2828,
"preview": "#!/usr/bin/env bash\n\nexport BDP_DWH_HOME=\"$(cd \"`dirname $(readlink -nf \"$0\")`\"/..; pwd -P)\"\nexport SRC_BDP_MASTER_HOME="
},
{
"path": "bdp-dwh/src/main/resources/bin/src-bdp-metric.sh",
"chars": 1266,
"preview": "#!/usr/bin/env bash\n\nexport BDP_DWH_HOME=\"$(cd \"`dirname $(readlink -nf \"$0\")`\"/..; pwd -P)\"\nexport SRC_BDP_METRIC_HOME="
},
{
"path": "bdp-dwh/src/main/resources/bin/util.sh",
"chars": 2768,
"preview": "#!/usr/bin/env bash\n\nexport TMP_DATA_BASE_DIR=\"/data/tmp\"\nexport BDP_DWH_JAR_DIR=\"$BDP_DWH_HOME/jar\"\n\nBDP_DWH_DEPENDENCY"
},
{
"path": "bdp-dwh/src/main/resources/deploy.bat",
"chars": 775,
"preview": "@echo off\n\nset host=${app.host}\nset user=${app.user.name}\nset password=${app.user.password}\nset baseDir=${app.user.home}"
},
{
"path": "bdp-dwh/src/main/resources/lib/dmt/infra-metric/action/build-fact_metric.sql",
"chars": 955,
"preview": "-- noinspection SqlNoDataSourceInspectionForFile\n-- src.bdp_metric_metric or dwh.bdp_metric_metric ??\ninsert overwrite t"
},
{
"path": "bdp-dwh/src/main/resources/lib/dmt/infra-metric/action/build-sum_metric_avg.sql",
"chars": 1455,
"preview": "-- noinspection SqlNoDataSourceInspectionForFile\ncreate temporary function gen_rag as 'com.github.bdp.dwh.udf.GenRag' us"
},
{
"path": "bdp-dwh/src/main/resources/lib/dmt/infra-metric/action/build-wide_metric_avg.sql",
"chars": 1345,
"preview": "-- noinspection SqlNoDataSourceInspectionForFile\ninsert overwrite table dmt.wide_metric_avg partition(creation_date)\nsel"
},
{
"path": "bdp-dwh/src/main/resources/lib/dmt/infra-metric/bin/spark-actions.sh",
"chars": 1009,
"preview": "#!/usr/bin/env bash\n\ncreate()\n{\n target=\"$1\"\n execSql \"job name: create schema of [ $target @ $SUBJECT ]\" \"$DMT_IN"
},
{
"path": "bdp-dwh/src/main/resources/lib/dmt/infra-metric/schema/fact_metric.sql",
"chars": 334,
"preview": "-- noinspection sqlnodatasourceinspectionforfile\n\ndrop table if exists dmt.fact_metric;\ncreate table if not exists dmt.f"
},
{
"path": "bdp-dwh/src/main/resources/lib/dmt/infra-metric/schema/sum_metric_avg.sql",
"chars": 349,
"preview": "-- noinspection sqlnodatasourceinspectionforfile\n\ndrop table if exists dmt.sum_metric_avg;\ncreate table if not exists dm"
},
{
"path": "bdp-dwh/src/main/resources/lib/dmt/infra-metric/schema/wide_metric_avg.sql",
"chars": 790,
"preview": "-- noinspection sqlnodatasourceinspectionforfile\n\ndrop table if exists dmt.wide_metric_avg;\ncreate table if not exists d"
},
{
"path": "bdp-dwh/src/main/resources/lib/dmt/master-data/action/build-dim_app.sql",
"chars": 1671,
"preview": "-- noinspection SqlNoDataSourceInspectionForFile\n\nset spark.sql.hive.convertMetastoreParquet=false;\nset spark.sql.parser"
},
{
"path": "bdp-dwh/src/main/resources/lib/dmt/master-data/action/build-dim_hour.sql",
"chars": 261,
"preview": "-- noinspection SqlNoDataSourceInspectionForFile\n\ninsert overwrite table dmt.dim_hour\nselect\n dwid,\n db_date,\n "
},
{
"path": "bdp-dwh/src/main/resources/lib/dmt/master-data/action/build-dim_metric_index.sql",
"chars": 1693,
"preview": "-- noinspection SqlNoDataSourceInspectionForFile\n\nset spark.sql.hive.convertMetastoreParquet=false;\nset spark.sql.parser"
},
{
"path": "bdp-dwh/src/main/resources/lib/dmt/master-data/action/build-dim_metric_threshold.sql",
"chars": 1832,
"preview": "-- noinspection SqlNoDataSourceInspectionForFile\n\nset spark.sql.hive.convertMetastoreParquet=false;\nset spark.sql.parser"
},
{
"path": "bdp-dwh/src/main/resources/lib/dmt/master-data/action/build-dim_server.sql",
"chars": 1669,
"preview": "-- noinspection SqlNoDataSourceInspectionForFile\n\nset spark.sql.hive.convertMetastoreParquet=false;\nset spark.sql.parser"
},
{
"path": "bdp-dwh/src/main/resources/lib/dmt/master-data/bin/spark-actions.sh",
"chars": 1760,
"preview": "#!/usr/bin/env bash\n\ncreate()\n{\n target=\"$1\"\n execSql \"job name: create schema of [ $target @ $SUBJECT ]\" \"$DMT_M"
},
{
"path": "bdp-dwh/src/main/resources/lib/dmt/master-data/data/dim_hour.csv",
"chars": 704014,
"preview": "2018010100,2018-01-01,2018-01-01 00:00:00,2018,1,1,0,1,1,Monday,January,false\n2018010101,2018-01-01,2018-01-01 01:00:00,"
},
{
"path": "bdp-dwh/src/main/resources/lib/dmt/master-data/schema/dim_app.sql",
"chars": 310,
"preview": "-- noinspection sqlnodatasourceinspectionforfile\n\ndrop table if exists dmt.dim_app;\ncreate table if not exists dmt.dim_a"
},
{
"path": "bdp-dwh/src/main/resources/lib/dmt/master-data/schema/dim_hour.sql",
"chars": 727,
"preview": "-- noinspection sqlnodatasourceinspectionforfile\n\ndrop table if exists dmt.dim_hour;\ncreate table if not exists dmt.dim_"
},
{
"path": "bdp-dwh/src/main/resources/lib/dmt/master-data/schema/dim_metric_index.sql",
"chars": 328,
"preview": "-- noinspection sqlnodatasourceinspectionforfile\n\ndrop table if exists dmt.dim_metric_index;\ncreate table if not exists "
},
{
"path": "bdp-dwh/src/main/resources/lib/dmt/master-data/schema/dim_metric_threshold.sql",
"chars": 353,
"preview": "-- noinspection sqlnodatasourceinspectionforfile\n\ndrop table if exists dmt.dim_metric_threshold;\ncreate table if not exi"
},
{
"path": "bdp-dwh/src/main/resources/lib/dmt/master-data/schema/dim_server.sql",
"chars": 329,
"preview": "-- noinspection sqlnodatasourceinspectionforfile\n\ndrop table if exists dmt.dim_server;\ncreate table if not exists dmt.di"
},
{
"path": "bdp-dwh/src/main/resources/lib/dwh/bdp-master/action/build-app.sql",
"chars": 738,
"preview": "-- noinspection SqlNoDataSourceInspectionForFile\n-- move consolidated data back to original table.\n\nset spark.sql.hive.c"
},
{
"path": "bdp-dwh/src/main/resources/lib/dwh/bdp-master/action/build-metric_index.sql",
"chars": 777,
"preview": "-- noinspection SqlNoDataSourceInspectionForFile\n-- move consolidated data back to original table.\n\nset spark.sql.hive.c"
},
{
"path": "bdp-dwh/src/main/resources/lib/dwh/bdp-master/action/build-metric_threshold.sql",
"chars": 809,
"preview": "-- noinspection SqlNoDataSourceInspectionForFile\n-- move consolidated data back to original table.\n\nset spark.sql.hive.c"
},
{
"path": "bdp-dwh/src/main/resources/lib/dwh/bdp-master/action/build-server.sql",
"chars": 759,
"preview": "-- noinspection SqlNoDataSourceInspectionForFile\n-- move consolidated data back to original table.\n\nset spark.sql.hive.c"
},
{
"path": "bdp-dwh/src/main/resources/lib/dwh/bdp-master/bin/spark-actions.sh",
"chars": 1057,
"preview": "#!/usr/bin/env bash\n\ncreate()\n{\n target=\"$1\"\n execSql \"job name: create schema of [ $target @ $SUBJECT ]\" \"${DWH_B"
},
{
"path": "bdp-dwh/src/main/resources/lib/dwh/bdp-master/schema/app.sql",
"chars": 319,
"preview": "-- noinspection sqlnodatasourceinspectionforfile\n\ndrop table if exists dwh.bdp_master_app;\ncreate table if not exists dw"
},
{
"path": "bdp-dwh/src/main/resources/lib/dwh/bdp-master/schema/metric_index.sql",
"chars": 338,
"preview": "-- noinspection sqlnodatasourceinspectionforfile\n\ndrop table if exists dwh.bdp_master_metric_index;\ncreate table if not "
},
{
"path": "bdp-dwh/src/main/resources/lib/dwh/bdp-master/schema/metric_threshold.sql",
"chars": 364,
"preview": "-- noinspection sqlnodatasourceinspectionforfile\n\ndrop table if exists dwh.bdp_master_metric_threshold;\ncreate table if "
},
{
"path": "bdp-dwh/src/main/resources/lib/dwh/bdp-master/schema/server.sql",
"chars": 340,
"preview": "-- noinspection sqlnodatasourceinspectionforfile\n\ndrop table if exists dwh.bdp_master_server;\ncreate table if not exists"
},
{
"path": "bdp-dwh/src/main/resources/lib/dwh/bdp-metric/action/build-metric.sql",
"chars": 392,
"preview": "-- noinspection SqlNoDataSourceInspectionForFile\n\ninsert overwrite table dwh.bdp_metric_metric partition(creation_date)\n"
},
{
"path": "bdp-dwh/src/main/resources/lib/dwh/bdp-metric/bin/spark-actions.sh",
"chars": 744,
"preview": "#!/usr/bin/env bash\n\ncreate()\n{\n target=\"$1\"\n execSql \"job name: create schema of [ $target @ $SUBJECT ]\" \"$DWH_BD"
},
{
"path": "bdp-dwh/src/main/resources/lib/dwh/bdp-metric/schema/metric.sql",
"chars": 318,
"preview": "-- noinspection sqlnodatasourceinspectionforfile\n\ndrop table if exists dwh.bdp_metric_metric;\ncreate table if not exists"
},
{
"path": "bdp-dwh/src/main/resources/lib/src/bdp-master/action/build-app.sql",
"chars": 409,
"preview": "-- noinspection SqlNoDataSourceInspectionForFile\n\ninsert overwrite table src.bdp_master_app partition(update_date)\nselec"
},
{
"path": "bdp-dwh/src/main/resources/lib/src/bdp-master/action/build-metric_index.sql",
"chars": 426,
"preview": "-- noinspection SqlNoDataSourceInspectionForFile\n\ninsert overwrite table src.bdp_master_metric_index partition(update_da"
},
{
"path": "bdp-dwh/src/main/resources/lib/src/bdp-master/action/build-metric_threshold.sql",
"chars": 455,
"preview": "-- noinspection SqlNoDataSourceInspectionForFile\n\ninsert overwrite table src.bdp_master_metric_threshold partition(updat"
},
{
"path": "bdp-dwh/src/main/resources/lib/src/bdp-master/action/build-server.sql",
"chars": 428,
"preview": "-- noinspection SqlNoDataSourceInspectionForFile\n\ninsert overwrite table src.bdp_master_server partition(update_date)\nse"
},
{
"path": "bdp-dwh/src/main/resources/lib/src/bdp-master/bin/spark-actions.sh",
"chars": 709,
"preview": "#!/usr/bin/env bash\n\ncreate()\n{\n target=\"$1\"\n execSql \"job name: create schema of [ $target @ $SUBJECT ]\" \"${SRC_B"
},
{
"path": "bdp-dwh/src/main/resources/lib/src/bdp-master/bin/sqoop-actions.sh",
"chars": 2009,
"preview": "#!/usr/bin/env bash\n\ncreateToTmp()\n{\n srcTable=\"$1\"\n sinkTable=\"$2\"\n printHeading \"job name: create table ${sin"
},
{
"path": "bdp-dwh/src/main/resources/lib/src/bdp-master/schema/app.sql",
"chars": 356,
"preview": "-- noinspection sqlnodatasourceinspectionforfile\n\ndrop table if exists src.bdp_master_app;\ncreate table if not exists sr"
},
{
"path": "bdp-dwh/src/main/resources/lib/src/bdp-master/schema/metric_index.sql",
"chars": 375,
"preview": "-- noinspection sqlnodatasourceinspectionforfile\n\ndrop table if exists src.bdp_master_metric_index;\ncreate table if not "
},
{
"path": "bdp-dwh/src/main/resources/lib/src/bdp-master/schema/metric_threshold.sql",
"chars": 399,
"preview": "-- noinspection sqlnodatasourceinspectionforfile\n\ndrop table if exists src.bdp_master_metric_threshold;\ncreate table if "
},
{
"path": "bdp-dwh/src/main/resources/lib/src/bdp-master/schema/server.sql",
"chars": 383,
"preview": "-- noinspection sqlnodatasourceinspectionforfile\n\ndrop table if exists src.bdp_master_server;\ncreate table if not exists"
},
{
"path": "bdp-dwh/src/main/resources/lib/src/bdp-metric/action/build-metric.sql",
"chars": 355,
"preview": "-- noinspection SqlNoDataSourceInspectionForFile\n\ninsert overwrite table src.bdp_metric_metric partition(creation_date)\n"
},
{
"path": "bdp-dwh/src/main/resources/lib/src/bdp-metric/bin/spark-actions.sh",
"chars": 424,
"preview": "#!/usr/bin/env bash\n\ncreate()\n{\n target=\"$1\"\n execSql \"job name: create schema of [ $target @ $SUBJECT ]\" \"$SRC_BD"
},
{
"path": "bdp-dwh/src/main/resources/lib/src/bdp-metric/bin/sqoop-actions.sh",
"chars": 1442,
"preview": "#!/usr/bin/env bash\n\ncreateToTmp()\n{\n srcTable=\"$1\"\n sinkTable=\"$2\"\n printHeading \"job name: create table ${sin"
},
{
"path": "bdp-dwh/src/main/resources/lib/src/bdp-metric/schema/metric.sql",
"chars": 318,
"preview": "-- noinspection sqlnodatasourceinspectionforfile\n\ndrop table if exists src.bdp_metric_metric;\ncreate table if not exists"
},
{
"path": "bdp-dwh/src/main/scala/com.github.bdp.dwh.udf/GenRag.scala",
"chars": 267,
"preview": "package com.github.bdp.dwh.udf\nimport org.apache.hadoop.hive.ql.exec.UDF\n\nclass GenRag extends UDF {\n\tdef evaluate(avg: "
},
{
"path": "bdp-import/.gitignore",
"chars": 20,
"preview": ".idea\n/*.iml\ntarget\n"
},
{
"path": "bdp-import/README.md",
"chars": 58,
"preview": "关于本子项目的部署、运行与代码细节,请参考《大数据平台架构与原型实现:数据中台建设实战》一书第5章以及第4章4.5节"
},
{
"path": "bdp-import/build.bat",
"chars": 1311,
"preview": "@echo off\nrem A batch script to build -> deploy -> restart\nrem -- Laurence Geng\nif [%1]==[] (\n echo.\n echo Usage: "
},
{
"path": "bdp-import/pom.xml",
"chars": 3413,
"preview": "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n xsi:sc"
},
{
"path": "bdp-import/src/main/assembly/bin.xml",
"chars": 1297,
"preview": "<assembly xmlns=\"http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2\"\n xmlns:xsi=\"http://www.w"
},
{
"path": "bdp-import/src/main/profiles/cluster.properties",
"chars": 1272,
"preview": "# app specific configs\napp.name=${project.artifactId}\napp.host=gateway1.cluster\napp.home=${app.user.home}/${project.buil"
},
{
"path": "bdp-import/src/main/profiles/standalone.properties",
"chars": 966,
"preview": "# app specific configs\napp.name=${project.artifactId}\napp.host=node1.cluster\napp.home=${app.user.home}/${project.build.f"
},
{
"path": "bdp-import/src/main/resources/bin/bdp-import.sh",
"chars": 1798,
"preview": "#!/usr/bin/env bash\n\nexport BDP_IMPORT_HOME=\"$(cd \"`dirname $(readlink -nf \"$0\")`\"/..; pwd -P)\"\n\nsource \"$BDP_IMPORT_HOM"
},
{
"path": "bdp-import/src/main/resources/bin/bdp-master-import.sh",
"chars": 6595,
"preview": "#!/usr/bin/env bash\n# ------------------------------------------------ Common Methods ------------------------------"
},
{
"path": "bdp-import/src/main/resources/bin/bdp-metric-import.sh",
"chars": 3134,
"preview": "#!/usr/bin/env bash\n\nexport BDP_IMPORT_HOME=\"$(cd \"`dirname $(readlink -nf \"$0\")`\"/..; pwd -P)\"\nexport SUBJECT=\"bdp-metr"
},
{
"path": "bdp-import/src/main/resources/bin/util.sh",
"chars": 499,
"preview": "#!/usr/bin/env bash\n\nexport TMP_DATA_BASE_DIR=\"/data/tmp\"\n\nprintHeading()\n{\n title=\"$1\"\n paddingWidth=$((($(tput c"
},
{
"path": "bdp-import/src/main/resources/deploy.bat",
"chars": 775,
"preview": "@echo off\n\nset host=${app.host}\nset user=${app.user.name}\nset password=${app.user.password}\nset baseDir=${app.user.home}"
},
{
"path": "bdp-master-client/.gitignore",
"chars": 20,
"preview": ".idea\n/*.iml\ntarget\n"
},
{
"path": "bdp-master-client/README.md",
"chars": 58,
"preview": "关于本子项目的部署、运行与代码细节,请参考《大数据平台架构与原型实现:数据中台建设实战》一书第7章以及第4章4.5节"
},
{
"path": "bdp-master-client/pom.xml",
"chars": 5047,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2"
},
{
"path": "bdp-master-client/src/main/profiles/cluster.properties",
"chars": 43,
"preview": "redis.host=gateway1.cluster\nredis.port=6379"
},
{
"path": "bdp-master-client/src/main/profiles/local.properties",
"chars": 36,
"preview": "redis.host=localhost\nredis.port=6380"
},
{
"path": "bdp-master-client/src/main/profiles/standalone.properties",
"chars": 40,
"preview": "redis.host=node1.cluster\nredis.port=6379"
},
{
"path": "bdp-master-client/src/main/resources/bdp-master-client.conf",
"chars": 51,
"preview": "redis.host=\"${redis.host}\"\nredis.port=${redis.port}"
},
{
"path": "bdp-master-client/src/main/resources/log4j.properties",
"chars": 296,
"preview": "# Root logger options\nlog4j.rootLogger=INFO, CONSOLE\n\n# Console appender\nlog4j.appender.CONSOLE=org.apache.log4j.Console"
},
{
"path": "bdp-master-client/src/main/scala/com/github/bdp/master/client/Constants.scala",
"chars": 683,
"preview": "package com.github.bdp.master.client\n\nimport com.typesafe.config.{Config, ConfigFactory}\n\n/**\n * All constants in lib m"
},
{
"path": "bdp-master-client/src/main/scala/com/github/bdp/master/client/Main.scala",
"chars": 641,
"preview": "package com.github.bdp.master.client\n\nimport com.github.bdp.master.client.service.{AlertIndexService, AppService, Metric"
},
{
"path": "bdp-master-client/src/main/scala/com/github/bdp/master/client/domain/AlertIndex.scala",
"chars": 181,
"preview": "package com.github.bdp.master.client.domain\n\nimport java.sql.Timestamp\n\ncase class AlertIndex(id: Long, name: String, se"
},
{
"path": "bdp-master-client/src/main/scala/com/github/bdp/master/client/domain/App.scala",
"chars": 195,
"preview": "package com.github.bdp.master.client.domain\nimport java.sql.Timestamp\ncase class App(id: Long, name: String, description"
},
{
"path": "bdp-master-client/src/main/scala/com/github/bdp/master/client/domain/MetricIndex.scala",
"chars": 206,
"preview": "package com.github.bdp.master.client.domain\n\nimport java.sql.Timestamp\n\ncase class MetricIndex(id: Long, name: String, d"
},
{
"path": "bdp-master-client/src/main/scala/com/github/bdp/master/client/domain/MetricThreshold.scala",
"chars": 187,
"preview": "package com.github.bdp.master.client.domain\n\nimport java.sql.Timestamp\n\ncase class MetricThreshold(amberThreshold: Int, "
},
{
"path": "bdp-master-client/src/main/scala/com/github/bdp/master/client/domain/SEVERITY.scala",
"chars": 201,
"preview": "package com.github.bdp.master.client.domain\n\nobject SEVERITY extends Enumeration {\n type SEVERITY = Value\n val GREEN ="
},
{
"path": "bdp-master-client/src/main/scala/com/github/bdp/master/client/domain/Server.scala",
"chars": 256,
"preview": "package com.github.bdp.master.client.domain\n\nimport java.sql.Timestamp\n\ncase class Server(id: Long, hostname: String, cp"
},
{
"path": "bdp-master-client/src/main/scala/com/github/bdp/master/client/domain/TSD.scala",
"chars": 197,
"preview": "package com.github.bdp.master.client.domain\n\n/**\n * The case class for OpenTSDB standard metrics format\n */\ncase class T"
},
{
"path": "bdp-master-client/src/main/scala/com/github/bdp/master/client/service/AlertIndexService.scala",
"chars": 617,
"preview": "package com.github.bdp.master.client.service\n\nimport com.github.bdp.master.client.Constants._\nimport com.github.bdp.mast"
},
{
"path": "bdp-master-client/src/main/scala/com/github/bdp/master/client/service/AppService.scala",
"chars": 548,
"preview": "package com.github.bdp.master.client.service\n\nimport com.github.bdp.master.client.Constants._\nimport com.github.bdp.mast"
},
{
"path": "bdp-master-client/src/main/scala/com/github/bdp/master/client/service/MetricIndexService.scala",
"chars": 649,
"preview": "package com.github.bdp.master.client.service\n\nimport com.github.bdp.master.client.Constants.METRIC_INDEX_KEYSPACE\nimport"
},
{
"path": "bdp-master-client/src/main/scala/com/github/bdp/master/client/service/ServerService.scala",
"chars": 586,
"preview": "package com.github.bdp.master.client.service\n\nimport com.github.bdp.master.client.Constants._\nimport com.github.bdp.mast"
},
{
"path": "bdp-master-client/src/main/scala/com/github/bdp/master/client/util/JsonDecoder.scala",
"chars": 1283,
"preview": "package com.github.bdp.master.client.util\n\nimport java.sql.Timestamp\n\nimport com.github.bdp.master.client.domain.{AlertI"
},
{
"path": "bdp-master-client/src/main/scala/com/github/bdp/master/client/util/RedisClient.scala",
"chars": 686,
"preview": "package com.github.bdp.master.client.util\n\nimport com.github.bdp.master.client.Constants._\nimport com.typesafe.scalalogg"
},
{
"path": "bdp-master-server/.gitignore",
"chars": 20,
"preview": ".idea\n/*.iml\ntarget\n"
},
{
"path": "bdp-master-server/README.md",
"chars": 58,
"preview": "关于本子项目的部署、运行与代码细节,请参考《大数据平台架构与原型实现:数据中台建设实战》一书第6章以及第4章4.5节"
},
{
"path": "bdp-master-server/build.bat",
"chars": 1621,
"preview": "@echo off\nrem A batch script to build -> deploy -> restart\nrem -- Laurence Geng\nif [%1]==[] (\n echo.\n echo Usage: "
},
{
"path": "bdp-master-server/pom.xml",
"chars": 4095,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2"
},
{
"path": "bdp-master-server/src/main/assembly/bin-delta.xml",
"chars": 1305,
"preview": "<assembly xmlns=\"http://maven.apache.org/ASSEMBLY/2.0.0\"\n xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\""
},
{
"path": "bdp-master-server/src/main/assembly/bin.xml",
"chars": 1408,
"preview": "<assembly xmlns=\"http://maven.apache.org/ASSEMBLY/2.0.0\"\n xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\""
},
{
"path": "bdp-master-server/src/main/java/com/github/bdp/master/server/Constants.java",
"chars": 511,
"preview": "package com.github.bdp.master.server;\n\npublic interface Constants {\n String APP_KEYSPACE = \"bdp-metric\";\n String A"
},
{
"path": "bdp-master-server/src/main/java/com/github/bdp/master/server/Main.java",
"chars": 497,
"preview": "package com.github.bdp.master.server;\n\nimport org.springframework.boot.SpringApplication;\nimport org.springframework.boo"
},
{
"path": "bdp-master-server/src/main/java/com/github/bdp/master/server/RedisConfig.java",
"chars": 1871,
"preview": "package com.github.bdp.master.server;\n\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springf"
},
{
"path": "bdp-master-server/src/main/java/com/github/bdp/master/server/controller/AlertIndexController.java",
"chars": 1447,
"preview": "package com.github.bdp.master.server.controller;\n\nimport com.github.bdp.master.server.domain.AlertIndex;\nimport com.gith"
},
{
"path": "bdp-master-server/src/main/java/com/github/bdp/master/server/controller/AppController.java",
"chars": 1326,
"preview": "package com.github.bdp.master.server.controller;\n\nimport com.github.bdp.master.server.domain.App;\nimport com.github.bdp."
},
{
"path": "bdp-master-server/src/main/java/com/github/bdp/master/server/controller/AppStartupListener.java",
"chars": 1307,
"preview": "package com.github.bdp.master.server.controller;\n\nimport com.github.bdp.master.server.service.AlertIndexService;\nimport "
},
{
"path": "bdp-master-server/src/main/java/com/github/bdp/master/server/controller/MetricIndexController.java",
"chars": 1323,
"preview": "package com.github.bdp.master.server.controller;\n\nimport com.github.bdp.master.server.domain.MetricIndex;\nimport com.git"
},
{
"path": "bdp-master-server/src/main/java/com/github/bdp/master/server/controller/ServerController.java",
"chars": 1368,
"preview": "package com.github.bdp.master.server.controller;\n\nimport com.github.bdp.master.server.domain.Server;\nimport com.github.b"
},
{
"path": "bdp-master-server/src/main/java/com/github/bdp/master/server/domain/AlertIndex.java",
"chars": 2676,
"preview": "package com.github.bdp.master.server.domain;\n\n\nimport javax.persistence.*;\nimport java.io.Serializable;\nimport java.util"
},
{
"path": "bdp-master-server/src/main/java/com/github/bdp/master/server/domain/App.java",
"chars": 2043,
"preview": "package com.github.bdp.master.server.domain;\n\nimport javax.persistence.*;\nimport java.io.Serializable;\nimport java.util."
},
{
"path": "bdp-master-server/src/main/java/com/github/bdp/master/server/domain/MetricIndex.java",
"chars": 2210,
"preview": "package com.github.bdp.master.server.domain;\n\nimport javax.persistence.*;\nimport java.io.Serializable;\nimport java.util."
},
{
"path": "bdp-master-server/src/main/java/com/github/bdp/master/server/domain/MetricThreshold.java",
"chars": 1611,
"preview": "package com.github.bdp.master.server.domain;\n\nimport javax.persistence.*;\nimport java.util.Date;\n\n@Embeddable\n//@Table(n"
},
{
"path": "bdp-master-server/src/main/java/com/github/bdp/master/server/domain/Server.java",
"chars": 2836,
"preview": "package com.github.bdp.master.server.domain;\n\nimport javax.persistence.*;\nimport java.io.Serializable;\nimport java.util."
},
{
"path": "bdp-master-server/src/main/java/com/github/bdp/master/server/repository/AlertIndexJpaRepository.java",
"chars": 274,
"preview": "package com.github.bdp.master.server.repository;\n\nimport com.github.bdp.master.server.domain.AlertIndex;\nimport org.spri"
},
{
"path": "bdp-master-server/src/main/java/com/github/bdp/master/server/repository/AlertIndexRedisRepository.java",
"chars": 357,
"preview": "package com.github.bdp.master.server.repository;\n\nimport com.github.bdp.master.server.domain.AlertIndex;\n\nimport java.ut"
},
{
"path": "bdp-master-server/src/main/java/com/github/bdp/master/server/repository/AppJpaRepository.java",
"chars": 253,
"preview": "package com.github.bdp.master.server.repository;\n\nimport com.github.bdp.master.server.domain.App;\nimport org.springframe"
},
{
"path": "bdp-master-server/src/main/java/com/github/bdp/master/server/repository/AppRedisRepository.java",
"chars": 294,
"preview": "package com.github.bdp.master.server.repository;\n\nimport com.github.bdp.master.server.domain.App;\n\nimport java.util.List"
},
{
"path": "bdp-master-server/src/main/java/com/github/bdp/master/server/repository/MetricIndexJpaRepository.java",
"chars": 277,
"preview": "package com.github.bdp.master.server.repository;\n\nimport com.github.bdp.master.server.domain.MetricIndex;\nimport org.spr"
},
{
"path": "bdp-master-server/src/main/java/com/github/bdp/master/server/repository/MetricIndexRedisRepository.java",
"chars": 366,
"preview": "package com.github.bdp.master.server.repository;\n\nimport com.github.bdp.master.server.domain.MetricIndex;\n\nimport java.u"
},
{
"path": "bdp-master-server/src/main/java/com/github/bdp/master/server/repository/MetricThresholdRepository.java",
"chars": 286,
"preview": "package com.github.bdp.master.server.repository;\n\nimport com.github.bdp.master.server.domain.MetricThreshold;\nimport org"
},
{
"path": "bdp-master-server/src/main/java/com/github/bdp/master/server/repository/ServerJpaRepository.java",
"chars": 262,
"preview": "package com.github.bdp.master.server.repository;\n\nimport com.github.bdp.master.server.domain.Server;\nimport org.springfr"
},
{
"path": "bdp-master-server/src/main/java/com/github/bdp/master/server/repository/ServerRedisRepository.java",
"chars": 326,
"preview": "package com.github.bdp.master.server.repository;\n\nimport com.github.bdp.master.server.domain.Server;\n\nimport java.util.L"
},
{
"path": "bdp-master-server/src/main/java/com/github/bdp/master/server/repository/impl/AlertIndexRedisRepositoryImpl.java",
"chars": 3662,
"preview": "package com.github.bdp.master.server.repository.impl;\n\nimport com.alibaba.fastjson.JSON;\nimport com.github.bdp.master.se"
},
{
"path": "bdp-master-server/src/main/java/com/github/bdp/master/server/repository/impl/AppRedisRepositoryImpl.java",
"chars": 3362,
"preview": "package com.github.bdp.master.server.repository.impl;\n\nimport com.alibaba.fastjson.JSON;\nimport com.github.bdp.master.se"
},
{
"path": "bdp-master-server/src/main/java/com/github/bdp/master/server/repository/impl/MetricIndexRedisRepositoryImpl.java",
"chars": 3711,
"preview": "package com.github.bdp.master.server.repository.impl;\n\nimport com.alibaba.fastjson.JSON;\nimport com.github.bdp.master.se"
},
{
"path": "bdp-master-server/src/main/java/com/github/bdp/master/server/repository/impl/ServerRedisRepositoryImpl.java",
"chars": 4128,
"preview": "package com.github.bdp.master.server.repository.impl;\n\nimport com.alibaba.fastjson.JSON;\nimport com.github.bdp.master.se"
},
{
"path": "bdp-master-server/src/main/java/com/github/bdp/master/server/service/AlertIndexService.java",
"chars": 346,
"preview": "package com.github.bdp.master.server.service;\n\n\nimport com.github.bdp.master.server.domain.AlertIndex;\n\nimport java.util"
},
{
"path": "bdp-master-server/src/main/java/com/github/bdp/master/server/service/AppService.java",
"chars": 295,
"preview": "package com.github.bdp.master.server.service;\n\n\nimport com.github.bdp.master.server.domain.App;\n\nimport java.util.List;\n"
},
{
"path": "bdp-master-server/src/main/java/com/github/bdp/master/server/service/MetricIndexService.java",
"chars": 354,
"preview": "package com.github.bdp.master.server.service;\n\n\nimport com.github.bdp.master.server.domain.MetricIndex;\n\nimport java.uti"
},
{
"path": "bdp-master-server/src/main/java/com/github/bdp/master/server/service/ServerService.java",
"chars": 317,
"preview": "package com.github.bdp.master.server.service;\n\nimport java.util.List;\nimport com.github.bdp.master.server.domain.Server;"
},
{
"path": "bdp-master-server/src/main/java/com/github/bdp/master/server/service/impl/AlertIndexServiceImpl.java",
"chars": 1784,
"preview": "package com.github.bdp.master.server.service.impl;\n\n\nimport com.github.bdp.master.server.domain.AlertIndex;\nimport com.g"
},
{
"path": "bdp-master-server/src/main/java/com/github/bdp/master/server/service/impl/AppServiceImpl.java",
"chars": 1480,
"preview": "package com.github.bdp.master.server.service.impl;\n\n\nimport com.github.bdp.master.server.domain.App;\nimport com.github.b"
},
{
"path": "bdp-master-server/src/main/java/com/github/bdp/master/server/service/impl/MetricIndexServiceImpl.java",
"chars": 1840,
"preview": "package com.github.bdp.master.server.service.impl;\n\n\nimport com.github.bdp.master.server.domain.MetricIndex;\nimport com."
},
{
"path": "bdp-master-server/src/main/java/com/github/bdp/master/server/service/impl/ServerServiceImpl.java",
"chars": 1805,
"preview": "package com.github.bdp.master.server.service.impl;\n\n\nimport com.github.bdp.master.server.domain.Server;\nimport com.githu"
},
{
"path": "bdp-master-server/src/main/profiles/cluster.properties",
"chars": 688,
"preview": "# app specific configs\napp.name=${project.artifactId}\napp.host=gateway1.cluster\napp.home=${app.user.home}/${project.buil"
},
{
"path": "bdp-master-server/src/main/profiles/standalone.properties",
"chars": 682,
"preview": "# app specific configs\napp.name=${project.artifactId}\napp.host=node1.cluster\napp.home=${app.user.home}/${project.build.f"
},
{
"path": "bdp-master-server/src/main/resources/bin/bdp-master-server.sh",
"chars": 2911,
"preview": "#!/usr/bin/env bash\n\nexport BDP_MASTER_SERVER_HOME=\"$(cd \"`dirname $(readlink -nf \"$0\")`\"/..; pwd -P)\"\n\nBDP_MASTER_LIB_D"
},
{
"path": "bdp-master-server/src/main/resources/conf/application.properties",
"chars": 1228,
"preview": "server.port=9090\n\nspring.datasource.driver-class-name=com.mysql.jdbc.Driver\nspring.datasource.url=${bdp.master.jdbc.url}"
},
{
"path": "bdp-master-server/src/main/resources/conf/bdp-master-data-2018-09-01.sql",
"chars": 2899,
"preview": "set foreign_key_checks=0;\n\nalter table bdp_master.app disable keys;\ntruncate bdp_master.app;\ninsert into bdp_master.app "
},
{
"path": "bdp-master-server/src/main/resources/conf/bdp-master-data-2018-09-02.sql",
"chars": 451,
"preview": "update bdp_master.app set version='7.1', update_time='2018-09-02 00:00:00' where id=1;\nupdate bdp_master.server set memo"
},
{
"path": "bdp-master-server/src/main/resources/conf/logback.xml",
"chars": 2174,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<configuration>\n\n <!-- console appender -->\n <appender name=\"console\" class"
},
{
"path": "bdp-master-server/src/main/resources/deploy.bat",
"chars": 1692,
"preview": "@echo off\n\nset host=${app.host}\nset user=${app.user.name}\nset password=${app.user.password}\nset baseDir=${app.user.home}"
},
{
"path": "bdp-metric/.gitignore",
"chars": 20,
"preview": ".idea\n/*.iml\ntarget\n"
},
{
"path": "bdp-metric/README.md",
"chars": 58,
"preview": "关于本子项目的部署、运行与代码细节,请参考《大数据平台架构与原型实现:数据中台建设实战》一书第5章以及第4章4.5节"
},
{
"path": "bdp-metric/build.bat",
"chars": 1311,
"preview": "@echo off\nrem A batch script to build -> deploy -> restart\nrem -- Laurence Geng\nif [%1]==[] (\n echo.\n echo Usage: "
},
{
"path": "bdp-metric/pom.xml",
"chars": 3413,
"preview": "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n xsi:sc"
},
{
"path": "bdp-metric/src/main/assembly/bin.xml",
"chars": 1114,
"preview": "<assembly xmlns=\"http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2\"\n xmlns:xsi=\"http://www.w"
},
{
"path": "bdp-metric/src/main/profiles/cluster.properties",
"chars": 289,
"preview": "app.name=${project.artifactId}\napp.host=gateway1.cluster\napp.home=${app.user.home}/${project.build.finalName}\napp.pidDir"
},
{
"path": "bdp-metric/src/main/profiles/standalone.properties",
"chars": 278,
"preview": "app.name=${project.artifactId}\napp.host=node1.cluster\napp.home=${app.user.home}/${project.build.finalName}\napp.pidDir=/t"
},
{
"path": "bdp-metric/src/main/resources/bin/bdp-metric.sh",
"chars": 10151,
"preview": "#!/usr/bin/env bash\n\nexport BDP_METRIC_HOME=\"$(cd \"`dirname $(readlink -nf \"$0\")`\"/..; pwd -P)\"\n\nGEN_CPU_USAGE_PID=\"/tmp"
},
{
"path": "bdp-metric/src/main/resources/deploy.bat",
"chars": 1203,
"preview": "@echo off\n\nset host=${app.host}\nset user=${app.user.name}\nset password=${app.user.password}\nset baseDir=${app.user.home}"
},
{
"path": "bdp-metric/src/main/resources/sql/gen-alert.sql",
"chars": 167,
"preview": "insert into `bdp_metric`.`alert` (`message`, `hostname`, `status`, `timestamp`) values ('free space warning (mb) for hos"
},
{
"path": "bdp-metric/src/main/resources/sql/gen-cpu-usage.sql",
"chars": 270,
"preview": "insert into `bdp_metric`.`metric` (`name`, `hostname`, `value`, `timestamp`) values ('cpu.usage', 'svr1001', @value1@, '"
},
{
"path": "bdp-metric/src/main/resources/sql/gen-mem-used.sql",
"chars": 268,
"preview": "insert into `bdp_metric`.`metric` (`name`, `hostname`, `value`, `timestamp`) values ('mem.used', 'svr1001', @value1@, '@"
},
{
"path": "bdp-metric/src/main/resources/sql/schema.sql",
"chars": 1034,
"preview": "drop database if exists bdp_metric;\ncreate database if not exists bdp_metric;\n\ndrop user if exists 'bdp_metric'@'node1.c"
},
{
"path": "bdp-parent/.gitignore",
"chars": 20,
"preview": ".idea\n/*.iml\ntarget\n"
},
{
"path": "bdp-parent/README.md",
"chars": 1080,
"preview": "# 大数据平台工程原型(Big Data Platform Project Prototype)\n\n\n2008年Hadoop成为Apache的顶级项目,以此为开端,大数据技术迎来了十多年的持续发展,其间随着Spark的异军突起,整个大数据生"
},
{
"path": "bdp-parent/pom.xml",
"chars": 18445,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2"
},
{
"path": "bdp-stream/.gitignore",
"chars": 20,
"preview": ".idea\n/*.iml\ntarget\n"
},
{
"path": "bdp-stream/README.md",
"chars": 323,
"preview": "关于本子项目的部署、运行与代码细节,请参考《大数据平台架构与原型实现:数据中台建设实战》一书第7章以及第4章4.5节\n\n友情提示:如果该项目提交后迟迟进入不到运行状态,请确认你的集群资源是否充足,同时可以考虑将profile文件中spark"
},
{
"path": "bdp-stream/build.bat",
"chars": 1903,
"preview": "@echo off\nrem A batch script to build -> deploy -> restart\nrem -- Laurence Geng\nif [%1]==[] (\n echo.\n echo Usage: "
},
{
"path": "bdp-stream/pom.xml",
"chars": 4673,
"preview": "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n\txsi:schemaLoca"
},
{
"path": "bdp-stream/src/main/assembly/bin-delta.xml",
"chars": 1360,
"preview": "<assembly xmlns=\"http://maven.apache.org/ASSEMBLY/2.0.0\"\n xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\""
},
{
"path": "bdp-stream/src/main/assembly/bin.xml",
"chars": 1408,
"preview": "<assembly xmlns=\"http://maven.apache.org/ASSEMBLY/2.0.0\"\n xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\""
},
{
"path": "bdp-stream/src/main/profiles/cluster.properties",
"chars": 751,
"preview": "app.name=${project.artifactId}\napp.host=gateway1.cluster\napp.home=${app.user.home}/${project.build.finalName}\n\napp.user."
},
{
"path": "bdp-stream/src/main/profiles/standalone.properties",
"chars": 607,
"preview": "app.name=${project.artifactId}\napp.host=node1.cluster\napp.home=${app.user.home}/${project.build.finalName}\n\napp.user.nam"
},
{
"path": "bdp-stream/src/main/resources/bin/bdp-stream.sh",
"chars": 5516,
"preview": "#!/usr/bin/env bash\n\nexport BDP_STREAM_HOME=\"$(cd \"`dirname $(readlink -nf \"$0\")`\"/..; pwd -P)\"\n\nBDP_STREAM_CLUSTER_NODE"
},
{
"path": "bdp-stream/src/main/resources/conf/bdp-stream.conf",
"chars": 1252,
"preview": "spark {\n slide=\"5 seconds\"\n window=\"60 seconds\"\n checkpoint=\"${spark.checkpoint}\"\n}\n\nhbase {\n zkQuorum=\"${hbase.zkQu"
},
{
"path": "bdp-stream/src/main/resources/conf/fairscheduler.xml",
"chars": 985,
"preview": "<?xml version=\"1.0\"?>\n<allocations>\n <pool name=\"pool_persist_cpu_usage\">\n <schedulingMode>FAIR</schedulingMod"
},
{
"path": "bdp-stream/src/main/resources/conf/hbase-site.xml",
"chars": 3218,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--Autogenerated by Cloudera Manager-->\n<configuration>\n <property>\n "
},
{
"path": "bdp-stream/src/main/resources/conf/log4j-driver.properties",
"chars": 4305,
"preview": "# Root logger options\nlog4j.rootLogger=INFO, SPARK_ROLLING_BY_SIZE\n\n# App root logger options\nlog4j.logger.com.github.bd"
},
{
"path": "bdp-stream/src/main/resources/conf/log4j-executor.properties",
"chars": 5804,
"preview": "# Root logger options\nlog4j.rootLogger=INFO, SPARK_LOCAL_ROLLING_BY_SIZE\n# App root logger options\nlog4j.logger.com.gith"
},
{
"path": "bdp-stream/src/main/resources/deploy.bat",
"chars": 1633,
"preview": "@echo off\n\nset host=${app.host}\nset port=${app.local.port}\nset user=${app.user.name}\nset password=${app.user.password}\ns"
},
{
"path": "bdp-stream/src/main/scala/com/github/bdp/stream/AlertStream.scala",
"chars": 1714,
"preview": "package com.github.bdp.stream\n\nimport com.github.bdp.stream.Constants._\nimport com.github.bdp.stream.model.{Alert, Alert"
},
{
"path": "bdp-stream/src/main/scala/com/github/bdp/stream/Constants.scala",
"chars": 3649,
"preview": "package com.github.bdp.stream\n\nimport com.typesafe.config.{Config, ConfigFactory}\nimport org.apache.hadoop.hbase.util.By"
},
{
"path": "bdp-stream/src/main/scala/com/github/bdp/stream/Main.scala",
"chars": 2252,
"preview": "package com.github.bdp.stream\n\nimport com.github.bdp.stream.Constants._\nimport com.github.bdp.stream.service.AlertServic"
},
{
"path": "bdp-stream/src/main/scala/com/github/bdp/stream/MetricStream.scala",
"chars": 1644,
"preview": "package com.github.bdp.stream\n\nimport com.github.bdp.stream.Constants._\nimport com.github.bdp.stream.model.Metric\nimport"
},
{
"path": "bdp-stream/src/main/scala/com/github/bdp/stream/assembler/AlertAssembler.scala",
"chars": 702,
"preview": "package com.github.bdp.stream.assembler\n\nimport com.github.bdp.stream.Constants._\nimport com.github.bdp.stream.model.Ale"
},
{
"path": "bdp-stream/src/main/scala/com/github/bdp/stream/assembler/MetricAssembler.scala",
"chars": 909,
"preview": "package com.github.bdp.stream.assembler\n\nimport com.github.bdp.stream.Constants._\nimport com.github.bdp.stream.model.Met"
}
]
// ... and 40 more files (download for full content)
About this extraction
This page contains the full source code of the bluishglc/bdp GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 240 files (1.0 MB), approximately 477.5k tokens, and a symbol index with 269 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.