0
我想將mysql中多個表的數據加載到hdfs中,表的名稱像a_0_0,a_0_1,a_0_2。使用sqoop將多張表加載到hdfs中一次使用
如何cqan我使用Sqoop一次將這些表中的數據加載到hdfs中?
我可以使用UNION
嗎?
我想將mysql中多個表的數據加載到hdfs中,表的名稱像a_0_0,a_0_1,a_0_2。使用sqoop將多張表加載到hdfs中一次使用
如何cqan我使用Sqoop一次將這些表中的數據加載到hdfs中?
我可以使用UNION
嗎?
有很多方法可以實現這一點。
,如果你要導入MySQL數據庫中的所有表,你可以使用:import-all-tables - 你也可以使用此參數--exclude-tables <tables>
- 逗號分隔值 - 從impor-all-tables
排除某些表(S)如果你想導入的一些表(有意義的數據)的一些數據,你可以使用:Free-form Query Imports
如果要導入表的數量,就可以對shell腳本:
#!/bin/sh
i=0
while [ ${i} -le 5 ]
do
echo "importing table a_0_${i}"
#here write your full sqoop command, this is just an example
#sqoop import --connect --table a_0_${i}
i=$((i + 1))
done
現在運行shell腳本:sqoop命令將按邏輯運行6次並導入6個表。
$ ./importAll.sh
importing table a_0_0
importing table a_0_1
importing table a_0_2
importing table a_0_3
importing table a_0_4
importing table a_0_5
注:你必須根據你的需要來修改shell腳本邏輯。我建議的解決方案是基於所提供的詳細信息。
嗨,謝謝差別很大,我認爲解決方案2是合適的,因爲我有20W +表分佈在數百臺機器,我必須考慮每個數據庫的連接數。我打算使用union all來組合多個表,你知道如何實現嗎? – Jiangbo
20W +表是什麼意思?我認爲對於使用'UNION',你將不得不考慮像mysql一樣的列類型的需求,並且每個'UNION'子句中的列數都應該匹配。還要考慮'UNION'只會導出唯一的數據,您可能想使用'UNION ALL'。另外,選項2將把所有表導出到一個'hdfs'目錄 –