標籤:
本文使用的資料庫是mysql的sample database employees.
download url:https://launchpad.net/test-db/employees-db-1/1.0.6
然後根據ReadMe安裝到自己的mysql資料庫中。
sqoop的安裝:
:http://apache.dataguru.cn/sqoop/1.4.6/
sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz
sqoop-1.4.6.tar.gz
我的hadoop版本是2.6,所以我下載的是這兩個版本。
sqoop-1.4.6.tar.gz不能直接使用,需要編譯。編譯後把產生的
sqoop-1.4.6.jar 複製到 sqoop_home/lib下面即可。
複製jdbc connector
mysql-connector-java-5.1.32-bin.jar 或版本更高的mysql jdbc connector.
否則會出現某些bug.
sqoop list-tables --connect jdbc:mysql://namenode01:3306/employees --username hive --password hive mysqlurl=jdbc:mysql://namenode01:3306/employees sqoop import --connect $mysqlurl --username hive --password hive --table departments --target-dir /etl/input/departments hdfs dfs -cat /etl/input/departments/* insert into departments values(‘d9999‘,‘Evan,Test‘);Overriding Type Mapping--map-column-java c1=Float,c2=String,c3=String ...Sqoop by default uses four concurrent map tasks to transfer data to Hadoop. mysqlurl=jdbc:mysql://namenode01:3306/employees sqoop import --connect $mysqlurl --username hive --password hive --query ‘select d.dept_no,d.dept_name,de.from_date, de.to_date, e.* from employees e join dept_emp de on e.emp_no=de.emp_no join departments d on de.dept_no=d.dept_no WHERE $CONDITIONS‘ --split-by d.dept_no --target-dir /etl/input/employees --compare the result count from mysql and hdfs filehdfs dfs -cat /etl/input/employees/* | wc -lif you want to overwrite the data type, you can specify the column=type--map-column-hive id=STRING,price=DECIMAL mysqlurl=jdbc:mysql://namenode01:3306/employees sqoop import --connect $mysqlurl --username hive --password hive --query ‘select d.dept_no,d.dept_name,de.from_date, de.to_date, e.* from employees e join dept_emp de on e.emp_no=de.emp_no join departments d on de.dept_no=d.dept_no WHERE $CONDITIONS‘ --split-by d.dept_no --hive-import --hive-table test.employees --hive-drop-import-delims --null-string ‘\\N‘ --null-non-string ‘\\N‘ --target-dir /tmp/employees
sqoop sample code