如何解决使用 Sqoop 将 Amazon RDS 数据以 Parquet 格式导出至 Amazon S3 时发生的“未知的数据集 URI 模式:数据集”错误?
上次更新时间:2020 年 5 月 11 日
我尝试使用 Amazon EMR 集群通过 Apache Sqoop 以 Apache Parquet 格式将 Amazon Relational Database Service (Amazon RDS) 数据导出至 Amazon Simple Storage Service (Amazon S3)。我使用 --as-parquetfile 参数,但一直收到以下错误:
“检查 s3a 数据集的 JAR 是否在类路径 org.kitesdk.data.DatasetNotFoundException 中:未知的数据集 URI 模式:数据集。”
简短描述
此错误对 Sqoop 版本 1.4.7 造成影响。要解决此错误,请下载并安装 kite-data-s3-1.1.0.jar。
解决方法
注意:以下解决方案已在 Amazon EMR 发行版本 5.28.0 和 Sqoop 版本 1.4.7 上进行了测试。
1.使用 SSH 连接到主节点。
2.使用 wget 下载 kite-data-s3-1.1.0.jar:
$ wget https://repo1.maven.org/maven2/org/kitesdk/kite-data-s3/1.1.0/kite-data-s3-1.1.0.jar
3.确认下载的文件大小正确 (1.7 MB):
$ du -h
1.7M /usr/lib/sqoop/lib/kite-data-s3-1.1.0.jar
4.将 JAR 移动到 Sqoop 库目录 (/usr/lib/sqoop/lib/) 中:
sudo cp kite-data-s3-1.1.0.jar /usr/lib/sqoop/lib/
5.授予对 JAR 的权限:
sudo chmod 755 kite-data-s3-1.1.0.jar
6.使用 s3n 连接器导入 jar。如果您使用 s3 连接器,您将收到位置的数据集 URI 模式:数据集错误。
sqoop import --connect jdbc:mysql://mysql.cdfqbesrukqe.eu-west-1.rds.amazonaws.com:8193/dev --username admin -P --table hist_root --target-dir "s3n://awsexamplebucket/sqoop_parquet/demo" --as-parquetfile -m 2 --split-by identifiers -- --schema onwatch
有关 Kite 开发工具包数据集 URI 的更多信息,请参阅数据集、视图和存储库 URI。