3. datax中的代码,脚本
3.1 在编写 .sh 文件时,一些共用的东西可以建立一个bass.sh文件,然后再向其中传入变量,如下所示每个表的 .sh 文件中的内容差不多,就可以建立一个共用文件。在删除ods中的文件到垃圾回收站中时,需要打开/user的权限,每一个用户只能访问自己的文件夹
-
共用文件如下
# $1:获取脚本的第一个变量 ds=$1 # 表名字 table_name=$2 # 1.删除输出目录 hadoop fs -rmr /daas/motl/ods/$table_name/ds=$ds # 2.创建一个空的输出目录 hadoop fs -mkdir -p /daas/motl/ods/$table_name/ds=$ds # 3. 使用datax导入数据 # -p: 給json脚本传参数 datax.py -p "-Dds=$ds" ../datax/$table_name.json # 4. 给剑豪的表动态的添加一个分区 hive -e "alter table ods.$table_name add IF NOT EXISTS partition (ds='$ds')"
-
然后再引用base.sh 文件向其中传入数据就行,如下
# $1:获取表的第一个数据 ds=$1 sh base.sh $ds ods_t_gjj_sspersons
选择其中一个表将代码展示如下:ods_t_fcj_nwrs_sellbargain
-- hive中建表如下:
-- hive建表语句
-- hive建表语句
CREATE external TABLE IF NOT EXISTS ods.ods_t_fcj_nwrs_sellbargain(
id STRING comment '身份证号码',
r_fwzl STRING comment '房产地址',
htydjzmj STRING comment '合同中约定房子面积',
tntjzmj STRING comment '房子内建筑面积',
ftmj STRING comment '房子分摊建筑面积',
time_tjba STRING comment '商品房备案时间',
htzj STRING comment '合同总价'
)PARTITIONED BY
(
ds STRING
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
STORED AS textfile
location '/daas/motl/ods/ods_t_fcj_nwrs_sellbargain/';
json 文件如下:ods_t_fcj_nwrs_sellbargain
{
"job": {
"setting": {
"speed": {
"channel": 1
},
"errorLimit": {
"record": 0,
"percentage": 0.02
}
},
"content": [
{
"reader": {
"name": "mysqlreader",
"parameter": {
"username": "root",
"password": "123456",
"column": [
"id",
"r_fwzl",
"htydjzmj",
"tntjzmj",
"ftmj",
"time_tjba",
"htzj"
],
"connection": [
{
"table": [
"t_fcj_nwrs_sellbargain"
],
"jdbcUrl": [
"jdbc:mysql://master:3306/city_per"
]
}
]
}
},
"writer": {
"name": "hdfswriter",
"parameter": {
"defaultFS": "hdfs://master:9000",
"fileType": "text",
"path": "/daas/motl/ods/ods_t_fcj_nwrs_sellbargain/ds=${ds}",
"fileName": "xxxx",
"column": [
{ "name": "id","type": "STRING"},
{ "name": "r_fwzl","type": "STRING"},
{ "name": "htydjzmj","type": "STRING"},
{ "name": "tntjzmj","type": "STRING"},
{ "name": "ftmj","type": "STRING"},
{ "name": "time_tjba","type": "STRING"},
{ "name": "htzj","type": "STRING"}
],
"writeMode": "append",
"fieldDelimiter": "\t"
}
}
}
]
}
}
然后将整个文件夹拖入到linux中的/home/ods中
查询
计算内存和核数
如果是20台左右的服务器(128G内存,40核数),那么总内存大小为2T左右,核数大概为800核