我尝试使用 Amazon EMR 集群通过 Apache Sqoop 以 Apache Parquet 格式将 Amazon Relational Database Service (Amazon RDS) 数据导出至 Amazon Simple Storage Service (Amazon S3)。我使用 --as-parquetfile 参数,但一直收到以下错误:
Check that JARs for s3a datasets are on the class path org.kitesdk.data.DatasetNotFoundException: Unknown dataset URI pattern: dataset.(检查 s3a 数据集的 JAR 是否在类路径 org.kitesdk.data.DatasetNotFoundException 中:未知的数据集 URI 模式:数据集。)
简短描述
此错误对 Sqoop 版本 1.4.7 造成影响。要解决此错误,请下载并安装 kite-data-s3-1.1.0.jar。
解决方法
**注意:**以下解决方案已在 Amazon EMR 发行版本 5.34.0 和 Sqoop 版本 1.4.7 上进行测试。
1. 使用 SSH 连接到主节点。
2. 使用 wget 下载 kite-data-s3-1.1.0.jar:
[hadoop@ip-xxx-xx-xx-x]$ 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):
[hadoop@ip-xxx-xx-xx-x]$ 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 连接器,您将收到Unknown dataset URI pattern: dataset(未知的数据集 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 SDK 数据集 URI 的更多信息,请参阅《数据集、视图和存储库 URI》。