我嘗試使用 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.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 連接器,則會收到未知的資料集 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。