无法在AWS EMR集群中将mysql-connector添加至sqoop lib目录
解决AWS EMR中Sqoop添加MySQL驱动的权限问题
方法1:用sudo提升权限执行复制命令
/usr/lib/sqoop/lib属于系统级目录,普通用户无写入权限,在复制命令前添加sudo即可:
sudo cp mysql-connector-j-8.0.32/mysql-connector-j-8.0.32.jar /usr/lib/sqoop/lib
多数EMR集群默认允许无密码执行sudo,若需要验证,输入当前用户密码即可。
方法2:执行Sqoop任务时直接指定外部驱动
无需复制jar包到系统目录,运行sqoop命令时通过参数指定驱动位置:
sqoop export \ --connect jdbc:mysql://你的MySQL地址:3306/目标数据库名 \ --username 数据库用户名 \ --password 数据库密码 \ --table 目标表名 \ --export-dir s3://你的数据存储路径 \ --driver com.mysql.cj.jdbc.Driver \ --libjars /本地或S3上的驱动jar路径/mysql-connector-j-8.0.32.jar
这种方式适合临时任务或无sudo权限的场景。
方法3:通过EMR Bootstrap Action预安装驱动(长期集群推荐)
如果是长期使用的集群,创建时添加Bootstrap Action自动完成驱动部署,示例脚本如下:
#!/bin/bash wget https://cdn.mysql.com/Downloads/Connector-J/mysql-connector-j-8.0.32.tar.gz tar xzf mysql-connector-j-8.0.32.tar.gz sudo cp mysql-connector-j-8.0.32/mysql-connector-j-8.0.32.jar /usr/lib/sqoop/lib
将脚本上传到S3,创建EMR集群时选择添加Bootstrap Action并指定脚本的S3路径,集群启动后会自动完成驱动安装。
内容的提问来源于stack exchange,提问作者hns_03
相关产品推荐
相关产品推荐

