# 大數據
---
# opendata資料抓取方法
## ✎按檢視資料

## ✎複製網址

## ✎wget '網址' -O 命名 (抓資料)

---
# 資料備份
---
## ✎mkdir -p 建資料夾
opendata下面的Kids資料夾

## ✎tree的使用

## ✎Cp複製 a 到 opendata/kids/ 下

---
# 一般linux指令
---
## ✎ls

## ✎ls -alh 收尋當前目錄資料大小

## ✎cat 檔案 | head(tail)-n 5 看(後面)前面5筆紀錄(可能會包含到標題)

## ✎cat前後一起輸出

## ✎cat抓取 11 ~ 15的資料 cat head -n 15 |tail -n 5

## ✎当你运行这个命令时,它会跳过CSV文件的第一行,并显示CSV文件中的数据行数。这个命令将告诉你CSV文件中有多少行数据。

## ✎ | wc -l 收尋出來的個數
## ✎ grep -E 收尋多個


## ✎ 切欄位 | cut -d'切割符' -f2,5(要記得把標頭刪掉tail -n +2 ) 切開顯示2跟5的資料

## ✎ | sort (排續) | uniq(去重複)

## sort -t',' (-r) -k5 -r是多到少排序 ,k5是以5為key排序

## ✎ | tr -d(刪除) '刪除ㄨ',-s(取代) '被取代物' '取代物'


## ✎ tr去除雙引號

## ✎> 檔案名 (把修改過的資料轉存出來

## ✎unzip xx.zip(建議創一個資料夾丟進去分解)

## ✎看檔案格式 file -bi 檔案

## ✎轉檔案格式 iconv --from-code=BIG5 --to-code=UTF-8(看到ISO就用BIG5 ,UTF16就直接UTF16就好)

## ✎awk -F ',' '{if ($5 == 0) print($2,$5)}' 以,切分,條件判斷當第五格=0時印出2跟第欄(如果後面接grep就代表,是去第二欄跟第五欄找有沒有你要找的字詞)

---
# Hadoop指令
## ✎hdfs dfs -ls + 目錄 (-R)(看hadoops叢集下的跟目錄)

## ✎hdfs dfs -get 檔案放置的目錄位置 放置位置(下載功能)

## ✎hdfs dfs -mkdir (-p ) 檔名(/{子目錄,子目錄,...}) hadoop建立資料夾(順便建子目路)


## ✎hdfs dfs -put 欲放檔案 hadoop目錄位置 放東西進去hadoop裡

## ✎hdfs dfs -rm (-r) 目錄 刪除目錄(-r是直接全刪不管裡面有沒有檔案)

---
---
# 練習
## 抓取有幾個縣市
### ✎cat 抓取這個資料的有幾個資料,第一步驟先使用cut去切第三欄位cut -c1-9代表3個字符 之後sort去排序uniq去重wc -l 得出數目


---
# Hive命令
## hive 進入hive對話模式

## dfs -ls; 可以查看目錄

## quit; 退出對話模式

## 外部資料的定義表在linux的metastore_db裡

## nano 檔名 進入編輯模式

## 創表

# 抓資料(抓到跟目錄,或者直接指定原目錄)
## 看有幾張表
``
---
```
```
---
# 練習題ㄧ
### 最多幼兒園是那個縣市

步驟一 取得資料集
wget 'https://stats.moe.gov.tw/files/school/106/k1_new.csv' -O opendata/k106.csv
tail -n +2 opendata/k106.csv > k106.csv
hdfs dfs -mkdir k8086/
hdfs dfs -put k106.csv.csv k8086/k8086.csv
步驟二 寫程式建資料表
cat k8086.hsql
create external table k8086(
code string,
school string,
pub string,
city string,
addr string,
phone string
)
row format delimited fields terminated by ','
stored as textfile location '/user/user95/k8086';
執行程式
hive -f k8086.hsql
步驟三
hive -e 'select city,count(*) from k8086 group by city order by count(*) desc limit 5;' 2>/dev/null
執行結果 新北市最多
新北市 1134
---
# 練習題二
### 那一年的替代役人數最多

hive 解法 :
select year,SUM(trainees) from t20445 group by year order by SUM(trainees) desc;
---
# 練習題三
### 那間銀行的ATM 在台北市最多?

---
# 練習題四
### 老師與學生總人數最多的是那間大學(不分學士、碩士、博士)?
### 練習題五 有最多博士系所的是那間大學?

練習題四解題 :
步驟一
wget 'https://stats.moe.gov.tw/files/detail/106/106_sdata.csv' -O opendata/106std.csv
head -n 5 opendata/106std.csv
tail -n +2 opendata/106std.csv >106s.csv
hdfs dfs -mkdir s106/
cat 106s.csv | cut -d',' -f10,2,4,5,6,7,8 > s106.csv
hdfs dfs -put s106.csv s106/
步驟二 nano s106.hsql
create external table s9621(
school string,
faculty string,
courses string,
level string,
student int,
teacher int,
city string
)
row format delimited fields terminated by ','
stored as textfile location '/user/user95/s106';
執行程式
hive -f s106.hsql
步驟三
$ hive -e 'select (school,faculty),SUM(student)+SUM(teacher) as num from s9621 group by (school,f
aculty) order by num desc limit 5;' 2>/dev/null
執行結果如下:長庚科技大學,護理系,4654
{"col1":"長庚科技大學","col2":"護理系"}4654
{"col1":"新生醫護管理專科學校","col2":"護理科"}3778
{"col1":"耕莘健康管理專科學校","col2":"護理科"}3438
{"col1":"弘光科技大學","col2":"護理系"}2625
{"col1":"仁德醫護管理專科學校","col2":"護理科"}2580
---
# 練習題六 事故最多是哪一種車型?
### 練習七、發生事故最多是哪一天?(那年、那月、那日?)
### 承上題,練習八造成死亡數最多的是那種車型?
### 承上題,練習九平均造成死亡數最高的是那種車型?

---
# 練習題十造成受傷數最高的是那種車型?
### 承上題,平均造成受傷數最高的是那種車型?

```
```
---
# 2023金象盃練習題 解題
#### https://hackmd.io/@ARf0rnelTWC01YddQj6dUA/S1YZU2T7T
---
```
```
---
# Big Data 金象盃競賽競賽內容暨範例操作
### http://bigdata2016.twisc.ncku.edu.tw/content.html
---
```
```
---
# 2023 數據達人 (老師雲端的教材)
### https://drive.google.com/drive/folders/1r57WOor4M_7Y8PSvepASOsKAvkxyFTTP
---
```
```
---
# Exel檔案處理
## 第一題

### 選取 範圍 => 插入選項(樞紐分析表)

### 排序

### 遞減排序後

```
```
---
## 第二題

### 選取 資料 => 篩選
### 資料 => 移除重複選項
### 選取 範圍 => 插入選項(樞紐分析表)
### 遞減排序後
```
```
---
## 第五題

### 選取 資料 => 篩選
### 選取 範圍 => 插入選項(樞紐分析表) 選取有80、443 port複製
### 在進階篩選

### 選取全部 在選取 資料 =>排序 (選出熱門主機)
### 算出不安全比例後,排序(欄位選擇比例 從最大到最小)
### 把小數換成百分比例(選取資料 到常用的通用格式 選其他數字格式 百分比 小數第二位)
## 用python 將parquet轉csv檔

---

---

### 轉成 CSV檔後,是亂碼:
#### 資料=>從文字檔 找原本的檔案
```
```
# 第二階段 虛擬機
## 查詢電腦資訊

## dir 查詢目錄

## cd 查看目前的位置

## md:建資料夾 rd:刪除資料夾

#

#

#

## 拷貝檔案

## 刪除檔案
