mongodbからMysqlをデータ・バッチでインポートするシナリオ
2072 ワード
1、スクリプトディレクトリパス
2.Shellバッチスクリプトの内容
3、保管日のパラメータファイル
4、Mysql端対応表構造
5、tokenによってuvを計算する
6、mysql load dataデータのインポート時に最初の行をフィルタリングしてIGNORE 1 LINESオプションを使用することを説明する.日付を格納するパラメータファイルは、必要に応じて書き込むことができる日付ごとに1行です.mongodbのLikeフィルタは、--query'{"browser":/MicroMessenger/}'に示すオプション、便宜上、本明細書のプログラムパスには絶対パスが書き込まれており、呼び出し時にエラーが発生しないことを確認できます.
[spark@Master data_dir]$ pwd
/home/spark/opt/data_dir
[spark@Master data_dir]$ ls -R /home/spark/opt/data_dir
/home/spark/opt/data_dir:
weixin_data.sh yemao_log_20151214.csv yemao_log_20151215.csv yesterday.list
2.Shellバッチスクリプトの内容
[spark@Master data_dir]$ cat weixin_data.sh
#/bin/bash
#echo -n "please enter a day for runing :"
#read yesterday
while read yesterday
do
cd /home/spark/opt/data_dir/
/home/spark/opt/mongodb-2.7.0/bin/mongoexport -d yemao -c yemao_log_$yesterday --csv --query '{"browser":/MicroMessenger/}' -f id,time,url_from,url_current,url_to,token -o /home/spark/opt/data_dir/yemao_log_$yesterday.csv
/usr/local/mysql/bin/mysql -udatahouse -pDTHS2016 -h120.55.189.188 -P3306 --default-character-set=utf8 -e "use logdata; LOAD DATA LOCAL INFILE '/home/spark/opt/data_dir/yemao_log_$yesterday.csv' INTO TABLE yemao_weixin_log FIELDS TERMINATED BY ',' IGNORE 1 LINES;";
done < /home/spark/opt/data_dir/yesterday.list
3、保管日のパラメータファイル
[spark@Master data_dir]$ cat yesterday.list
20151214
20151215
4、Mysql端対応表構造
show create table yemao_weixin_log;
CREATE TABLE `yemao_weixin_log` (
`id` int(20) DEFAULT NULL,
`time` varchar(200) DEFAULT NULL,
`url_from` varchar(200) DEFAULT NULL,
`url_current` varchar(200) DEFAULT NULL,
`url_to` varchar(200) DEFAULT NULL,
`token` varchar(200) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8
5、tokenによってuvを計算する
select a1.log_date ,count(*) uv,sum(a1.pv) pv from
(select FROM_UNIXTIME(time,'%Y%m%d') log_date,token,count(*) pv from yemao_weixin_log group by FROM_UNIXTIME(time,'%Y%m%d'),token) a1
group by a1.log_date
6、mysql load dataデータのインポート時に最初の行をフィルタリングしてIGNORE 1 LINESオプションを使用することを説明する.日付を格納するパラメータファイルは、必要に応じて書き込むことができる日付ごとに1行です.mongodbのLikeフィルタは、--query'{"browser":/MicroMessenger/}'に示すオプション、便宜上、本明細書のプログラムパスには絶対パスが書き込まれており、呼び出し時にエラーが発生しないことを確認できます.