Shell Script 48시간 → Hive 4분
초기 계획)
데이터 셋을 연, 월로 분할하여 원활한 분석을 가능하게 하자!
<aside> 💡 1. EC2에 위치한 데이터 셋을 연,월 분리 (쉘 스크립트 사용) 2. 분리된 데이터 묶음을 HDFS 올리고 spark에서 사용
</aside>
Kaggle에 있는 NYC Taxi Fare Data의 구조는 다음과 같다

Shell Script를 통해 연도 별로 폴더를 나누고, 같은 달끼리 분류해서 저장하는 쉘 스크립트를 작성하였다. 먼저 용량이 작은 Test데이터 셋으로 실험을 해 보았다.
#!/bin/bash
mkdir data #Data 폴더 생성
cd data #진입
for var in {2009..2015} #09년 부터 15년까지 리스트 생성
do
mkdir $var #각 년도마다 폴더 생성
cd $var
for var2 in {01..12} #1월~12월까지 리스트 생성
do
mkdir $var2 #개월마다 폴더 생성
cd $var2
cd ..
done
cd ..
done
cat /home/ubuntu/dataset/train.csv | while read line # 데이터셋 로드 후 line으로 한 줄 씩 읽어옴
do
year=`echo $line | awk '{print $1}'`
year_temp=`echo $line | awk -F "-" '{print $1}'`
month_temp=`echo $line | awk -F "-" '{print $2}'`
if [ "$year_temp" -eq 2009 ]
then echo $line >> /home/ubuntu/test/data/$year_temp/$month_temp/$month_temp.csv
elif [ "$year_temp" -eq 2010 ]
then echo $line >> /home/ubuntu/test/data/$year_temp/$month_temp/$month_temp.csv
elif [ "$year_temp" -eq 2011 ]
then echo $line >> /home/ubuntu/test/data/$year_temp/$month_temp/$month_temp.csv
elif [ "$year_temp" -eq 2012 ]
then echo $line >> /home/ubuntu/test/data/$year_temp/$month_temp/$month_temp.csv
elif [ "$year_temp" -eq 2013 ]
then echo $line >> /home/ubuntu/test/data/$year_temp/$month_temp/$month_temp.csv
elif [ "$year_temp" -eq 2014 ]
then echo $line >> /home/ubuntu/test/data/$year_temp/$month_temp/$month_temp.csv
elif [ "$year_temp" -eq 2015 ]
then echo $line >> /home/ubuntu/test/data/$year_temp/$month_temp/$month_temp.csv
else echo $line >> /home/ubuntu/test/data/else_result.csv
fi
done
결과)




(정상적으로 분류가 되는 것을 확인할 수 있다.)