如何使用Sqoop将S3中的Parquet格式数据导入HDFS
S3 Parquet数据同步操作指南
Sqoop 原生
import命令的设计目标是将关系型数据库的数据导入Hadoop生态存储,不支持直接以S3上的Parquet文件作为源执行import操作,你可以根据自己的需求选择以下对应方案:
方案1:先同步S3 Parquet到HDFS,再导出到RDS
这是匹配你现有流程的方案,同步S3到HDFS不需要使用Sqoop,直接用Hadoop自带的distcp命令即可,性能更高:
hadoop distcp \ -Dfs.s3a.access.key=你的AWS访问密钥AK \ -Dfs.s3a.secret.key=你的AWS访问密钥SK \ s3a://你的S3桶名/Parquet文件存放路径/ \ /目标HDFS存储路径/
- 如果你使用的是自建对象存储(如MinIO),额外添加参数
-Dfs.s3a.endpoint=你的对象存储服务地址即可 - 同步完成后直接使用你已有的Sqoop导出命令,即可将HDFS上的Parquet数据写入RDS表
方案2:跳过HDFS中转,直接导出S3 Parquet到RDS
Sqoop的export命令支持直接读取S3上的Parquet文件,你可以省掉中间同步到HDFS的步骤,直接用以下命令完成全流程:
sqoop export \ -Dfs.s3a.access.key=你的AWS访问密钥AK \ -Dfs.s3a.secret.key=你的AWS访问密钥SK \ --connect jdbc:mysql://你的RDS实例地址/目标数据库名 \ --username RDS登录用户名 \ --password RDS登录密码 \ --table RDS目标表名 \ --export-dir s3a://你的S3桶名/Parquet文件存放路径/ \ --input-parquet \ --m 并发任务数
- 注意要保证Parquet文件的字段顺序、类型和RDS目标表完全一致,否则会出现写入异常
- 如果需要做字段映射,可以添加
--columns 字段1,字段2,字段3参数指定和RDS表匹配的字段顺序
内容的提问来源于stack exchange,提问作者Steffi Keran Rani J
相关产品推荐
相关产品推荐

