sqoop
用于关系型数据库与Hadoop之间数据传输的工具
导入数据:将My SQL/Oracle数据导入到Hadoop中的HDFS、HBase、Hive中
导出数据:将Hadoop中的数据导出到My SQL
1.将部分查询到的My SQL数据导入到HDFS里
sqoop import \
--connect jdbc:mysql://地址/数据库名 \ #连接My SQL
--username root\
--password 000000\
--target dir- /目录/ #要导入到HDFS里的目录,如不指定,则默认存储在“/user/用户名/导入的表名” 目录下
--delete-target-dir \ #如指定目录已存在,则删除再创建
--num-mappers 1 \ #指定maptask的个数,并最终决定在hdfs里的存储文件个数
--fields-terminated-by "\t" \
--query 'select * from t1 where a<5 $CONDITIONS;' #执行sql语句,注意where中必须要加$CONDITIONS,否则报异常
2.将HDFS的数据导出到My SQL
sqoop export \
--connect jdbc:mysql://url:3306/数据库名字 \ #输入My SQL的地址,连接到数据库
--username root \
--password 000000\
--table 表名\ #指出要导出到数据库的哪个表
--export-dir /地址路径 \ #指出HDFS要导出的地址路径
--fields-terminated-by "\t" \ #对HDFS文件要采用的分隔符
--num-mappers 1 \
--update-key 列名\ #对表中已存在的数据做更新
--update-mode allowinsert \ #允许将原来数据库中不存在的数据也导出到表中
Hive
用于将SQL语句转为MapReduce程序语言,实现Hadoop中数据分析的工具
3.从本地/HDFS导入数据到Hive
本地:load local data inpath '\本地数据文件目录\' overwrite into table 库名.表名
HDFS:load data inpath '\HDFS目录\' overwrite into table 库名.表名
impala shell
也是一种对HDFS、HBase的数据进行SQL查询的工具,与Hive的查询分析功能类似。但impala是基于内存计算,无需转换为MR,因此很快,可通过JBDC访问。是一种基于Hive的大数据实时查询引擎。
4.impala-shell -q
impala-shell -q "sql语句" -i 机器名;#不进入impala-shell 执行查询,-i指定服务器
Hadoop
hadoop fs -cat /路径/* >/本地路径/文件名 #将指定路径的文件拷贝到本地文件中,多次执行则覆盖
hive -e "sql" #直接执行sql语句
kinit -kt /XXX/XXX/XXX.keytab #认证