본 실습은 AWS EMR의 Primary(master) node 에서 진행한다.
실습용 데이터는 1987~2008년의 미국 항공편 운항 통계 데이터이다. 링크
예제 데이터의 컬럼에 대한 설명은 링크 에서 확인할 수 있다.
다음 디렉토리에 데이터를 저장한다.
mkdir example
mkdir example/datasource
cd example/datasource
다음 bash script 를 담은 get-data.sh 파일을 만들고 실행 권한을 부여한 뒤 실행한다.
#!/bin/bash
mkdir input
declare -a url_map=(
["1987"]='https://dataverse.harvard.edu/api/access/datafile/:persistentId?persistentId=doi:10.7910/DVN/HG7NV7/IXITH2'
["1988"]='https://dataverse.harvard.edu/api/access/datafile/:persistentId?persistentId=doi:10.7910/DVN/HG7NV7/TUYWU3'
["1989"]='https://dataverse.harvard.edu/api/access/datafile/:persistentId?persistentId=doi:10.7910/DVN/HG7NV7/T7EP3M'
["1990"]='https://dataverse.harvard.edu/api/access/datafile/:persistentId?persistentId=doi:10.7910/DVN/HG7NV7/QJKL3I'
["1991"]='https://dataverse.harvard.edu/api/access/datafile/:persistentId?persistentId=doi:10.7910/DVN/HG7NV7/EJ4WJO'
["1992"]='https://dataverse.harvard.edu/api/access/datafile/:persistentId?persistentId=doi:10.7910/DVN/HG7NV7/PLPDQO'
["1993"]='https://dataverse.harvard.edu/api/access/datafile/:persistentId?persistentId=doi:10.7910/DVN/HG7NV7/IOU9DX'
["1994"]='https://dataverse.harvard.edu/api/access/datafile/:persistentId?persistentId=doi:10.7910/DVN/HG7NV7/BH5P0X'
["1995"]='https://dataverse.harvard.edu/api/access/datafile/:persistentId?persistentId=doi:10.7910/DVN/HG7NV7/ZLTTDC'
["1996"]='https://dataverse.harvard.edu/api/access/datafile/:persistentId?persistentId=doi:10.7910/DVN/HG7NV7/3KDWWL'
["1997"]='https://dataverse.harvard.edu/api/access/datafile/:persistentId?persistentId=doi:10.7910/DVN/HG7NV7/RUGDRW'
["1998"]='https://dataverse.harvard.edu/api/access/datafile/:persistentId?persistentId=doi:10.7910/DVN/HG7NV7/H07RX8'
["1999"]='https://dataverse.harvard.edu/api/access/datafile/:persistentId?persistentId=doi:10.7910/DVN/HG7NV7/IP6BL3'
["2000"]='https://dataverse.harvard.edu/api/access/datafile/:persistentId?persistentId=doi:10.7910/DVN/HG7NV7/YGU3TD'
["2001"]='https://dataverse.harvard.edu/api/access/datafile/:persistentId?persistentId=doi:10.7910/DVN/HG7NV7/CI5CEM'
["2002"]='https://dataverse.harvard.edu/api/access/datafile/:persistentId?persistentId=doi:10.7910/DVN/HG7NV7/OWJXH3'
["2003"]='https://dataverse.harvard.edu/api/access/datafile/:persistentId?persistentId=doi:10.7910/DVN/HG7NV7/KM2QOA'
["2004"]='https://dataverse.harvard.edu/api/access/datafile/:persistentId?persistentId=doi:10.7910/DVN/HG7NV7/CCAZGT'
["2005"]='https://dataverse.harvard.edu/api/access/datafile/:persistentId?persistentId=doi:10.7910/DVN/HG7NV7/JTFT25'
["2006"]='https://dataverse.harvard.edu/api/access/datafile/:persistentId?persistentId=doi:10.7910/DVN/HG7NV7/EPIFFT'
["2007"]='https://dataverse.harvard.edu/api/access/datafile/:persistentId?persistentId=doi:10.7910/DVN/HG7NV7/2BHLWK'
["2008"]='https://dataverse.harvard.edu/api/access/datafile/:persistentId?persistentId=doi:10.7910/DVN/HG7NV7/EIR0RA'
)
declare -p url_map
for key in ${!url_map[@]}; do
value="${url_map[$key]}"
echo "key: $key, value: $value"
file_zip="${key}.csv.bz2"
wget -O "$file_zip" "$value"
bzip2 -d "$file_zip"
sed -e '1d' "${key}.csv" > "${key}_temp.csv"
mv "${key}_temp.csv" "./input/${key}.csv"
rm "${key}.csv"
done
ls -al ./input
위의 데이터 해석에 참고할 수 있는 다음 메타 데이터를 얻을 수있다.
다음 bash script 를 담은 get-metadata.sh 파일을 만들고 실행 권한을 부여한 뒤 실행한다.
#!/bin/bash
target_dir="metadata"
mkdir $target_dir
url="https://dataverse.harvard.edu/api/access/datafile/:persistentId?persistentId=doi:10.7910/DVN/HG7NV7/XTPZZY"
origin="airports-origin.csv"
data="airports.csv"
wget -O "${target_dir}/${origin}" "$url"
sed -e '1d' "${target_dir}/${origin}" > "${target_dir}/${data}"
url='https://dataverse.harvard.edu/api/access/datafile/:persistentId?persistentId=doi:10.7910/DVN/HG7NV7/3NOQ6Q'
origin="carriers-origin.csv"
data="carriers.csv"
wget -O "${target_dir}/${origin}" "$url"
sed -e '1d' "${target_dir}/${origin}" > "${target_dir}/${data}"
url='https://dataverse.harvard.edu/api/access/datafile/:persistentId?persistentId=doi:10.7910/DVN/HG7NV7/XXSL8A'
origin="plane-data-origin.csv"
data="plane-data.csv"
wget -O "${target_dir}/${origin}" "$url"
sed -e '1d' "${target_dir}/${origin}" > "${target_dir}/${data}"
ls -al "$target_dir"