我想解决我在 Amazon EMR 中使用 Sqoop 将 Amazon Relational Database Service (Amazon RDS) 数据以 Parquet 格式导出到 Amazon Simple Storage Service (Amazon S3) 时出现的“Unknown dataset URI pattern: dataset”(未知的数据集 URI 模式:数据集)错误。
解决方法
Unknown dataset URI pattern: dataset(未知的数据集 URI 模式:数据集)错误对 Sqoop 版本 1.4.7 有影响。要解决此错误,请完成以下步骤,以下载并安装 kite-data-s3-1.1.0.jar:
-
要连接到 Amazon EMR 主节点,请使用 SSH。
-
要下载 kite-data-s3-1.1.0.jar,请使用 wget:
[hadoop@example-ip-address]$ wget https://repo1.maven.org/maven2/org/kitesdk/kite-data-s3/1.1.0/kite-data-s3-1.1.0.jar
**注意:**请将 example-ip-address 替换为您的 IP 地址。
-
检查下载的文件大小是否正确 (1.7 MB):
[hadoop@example-ip-address]$ du -h kite-data-s3-1.1.0.jar
1.7M kite-data-s3-1.1.0.jar
**注意:**请将 example-ip-address 替换为您的 IP 地址。
-
将下载的文件移至 Sqoop 库目录 /usr/lib/sqoop/lib/:
sudo cp kite-data-s3-1.1.0.jar /usr/lib/sqoop/lib/
-
为下载的文件授予所需的权限:
sudo chmod 755 /usr/lib/sqoop/lib/kite-data-s3-1.1.0.jar
-
要导入下载的文件,请使用 s3n 连接器。
示例:
sqoop import --connect jdbc:mysql://mysql.cdfqbesrukqe.eu-west-1.rds.amazonaws.com:3306/dev --username admin -P --table hist_root --target-dir example-s3n://example-bucket/sqoop_parquet/demo --as-parquetfile -m 2 --split-by identifiers -- --schema onwatch
注意:如果您使用 s3 连接器,则会出现 Unknown dataset URI pattern: dataset(未知的数据集 URI 模式:数据集)错误。--target-dir 的值必须采用至少包含 3 层的路径格式 (s3n://example-bucket/example-namespace/example-dataset>)
有关详细信息,请参阅 Kite SDK 网站上的 Dataset, view, and repositories URI。