集群运行脚本遇到的坑
一、数据导入脚本
第一个坑:日志数据导入到了 ODS 层,而 ODS 层清洗完没数据?
这个问题可以通过创建一个新的表来解决 👇
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| CREATE TABLE ods.app_event_log2 ( account STRING, appid STRING, appversion STRING, carrier STRING, deviceid STRING, devicetype STRING, eventid STRING, ip STRING, latitude DOUBLE, longitude DOUBLE, nettype STRING, osname STRING, osversion STRING, properties MAP<STRING, STRING>, releasechannel STRING, resolution STRING, sessionid STRING, `timestamp` BIGINT ) PARTITIONED BY (dt STRING) ROW FORMAT SERDE 'org.apache.hive.hcatalog.data.JsonSerDe' STORED AS TEXTFILE;
|
然后上传数据到hdfs
1 2 3 4 5 6
| 假如直接输入以下命令,直接入坑 hdfs dfs -put app.access.log.2025-06-21 /logdata/app/2025-08-30 不会帮你创建文件夹的,而是将文件直接命名为2025-08-30 需要先创建文件夹: hdfs dfs -mkdir /logdata/app/2025-08-30 hdfs dfs -put app.access.log.2025-06-21 /logdata/app/2025-08-30
|
接着直接在服务器上运行脚本
文件名: 日志数据导入ODS层.sh
1 2 3 4 5 6 7
| #!/bin/bash dt1=$1 if [ 'x'$dt1 == 'x' ];then dt1=`date -d "yesterday" "+%Y-%m-%d"` fi hive -e "load data inpath '/logdata/app/$dt1/app.access.log.2023-06-21' into table ods.app_event_log2 partition (dt='$dt1')"
|
这个地方有个坑
1 2
| select * from app_event_log2; 直接报错:
|
这个错误,不影响我们的脚本运行,可以先搁置,在hive 中是没有问题的。