0
votes

SQOOOOP importation Postgres à S3 Échec

Je importe actuellement des données postgres sur HDFS. Je prévois de déplacer le stockage de HDFS en S3. Lorsque j'essaie de fournir un emplacement S3, le travail SQOP échoue. Je l'exécute sur le groupe EMR (EMR-5.27.0) et j'ai lu / écriture accès à ce godet S3 à partir de tous les nœuds du cluster. XXX PRE>

EXCEPTION est, P>

Warning: /usr/lib/sqoop/../accumulo does not exist! Accumulo imports will fail.
Please set $ACCUMULO_HOME to the root of your Accumulo installation.
19/10/21 09:27:32 INFO sqoop.Sqoop: Running Sqoop version: 1.4.7
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/usr/lib/hadoop/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/usr/lib/hive/lib/log4j-slf4j-impl-2.6.2.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]
19/10/21 09:27:33 INFO manager.SqlManager: Using default fetchSize of 1000
19/10/21 09:27:33 INFO tool.CodeGenTool: Beginning code generation
19/10/21 09:27:33 INFO tool.CodeGenTool: Will generate java class as codegen_addresses
19/10/21 09:27:34 INFO manager.SqlManager: Executing SQL statement: SELECT t.* FROM "addresses" AS t LIMIT 1
19/10/21 09:27:34 INFO orm.CompilationManager: HADOOP_MAPRED_HOME is /usr/lib/hadoop-mapreduce
Note: /tmp/sqoop-hadoop/compile/412c4a70c10c6569443f4c38dbdc2c99/codegen_addresses.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
19/10/21 09:27:37 INFO orm.CompilationManager: Writing jar file: /tmp/sqoop-hadoop/compile/412c4a70c10c6569443f4c38dbdc2c99/codegen_addresses.jar
19/10/21 09:27:37 WARN manager.PostgresqlManager: It looks like you are importing from postgresql.
19/10/21 09:27:37 WARN manager.PostgresqlManager: This transfer can be faster! Use the --direct
19/10/21 09:27:37 WARN manager.PostgresqlManager: option to exercise a postgresql-specific fast path.
19/10/21 09:27:37 INFO mapreduce.ImportJobBase: Beginning import of addresses
19/10/21 09:27:37 INFO Configuration.deprecation: mapred.jar is deprecated. Instead, use mapreduce.job.jar
19/10/21 09:27:39 INFO manager.SqlManager: Executing SQL statement: SELECT t.* FROM "addresses" AS t LIMIT 1
19/10/21 09:27:39 INFO manager.SqlManager: Executing SQL statement: SELECT t.* FROM "addresses" AS t LIMIT 1
19/10/21 09:27:39 INFO conf.HiveConf: Found configuration file file:/etc/hive/conf.dist/hive-site.xml
19/10/21 09:27:39 ERROR sqoop.Sqoop: Got exception running Sqoop: org.kitesdk.data.DatasetNotFoundException: Unknown dataset URI pattern: dataset:s3://<bucket>/<data>/temp
Check that JARs for s3 datasets are on the classpath
org.kitesdk.data.DatasetNotFoundException: Unknown dataset URI pattern: dataset:s3://<bucket>/<data>/temp
Check that JARs for s3 datasets are on the classpath
    at org.kitesdk.data.spi.Registration.lookupDatasetUri(Registration.java:128)
    at org.kitesdk.data.Datasets.exists(Datasets.java:624)
    at org.kitesdk.data.Datasets.exists(Datasets.java:646)
    at org.apache.sqoop.mapreduce.ParquetJob.configureImportJob(ParquetJob.java:118)
    at org.apache.sqoop.mapreduce.DataDrivenImportJob.configureMapper(DataDrivenImportJob.java:132)
    at org.apache.sqoop.mapreduce.ImportJobBase.runImport(ImportJobBase.java:264)
    at org.apache.sqoop.manager.SqlManager.importTable(SqlManager.java:692)
    at org.apache.sqoop.manager.PostgresqlManager.importTable(PostgresqlManager.java:127)
    at org.apache.sqoop.tool.ImportTool.importTable(ImportTool.java:520)
    at org.apache.sqoop.tool.ImportTool.run(ImportTool.java:628)
    at org.apache.sqoop.Sqoop.run(Sqoop.java:147)
    at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:76)
    at org.apache.sqoop.Sqoop.runSqoop(Sqoop.java:183)
    at org.apache.sqoop.Sqoop.runTool(Sqoop.java:234)
    at org.apache.sqoop.Sqoop.runTool(Sqoop.java:243)
    at org.apache.sqoop.Sqoop.main(Sqoop.java:252)


1 commentaires

Avez-vous une question ?


5 Réponses :


0
votes

Vous devrez modifier le protocole de cible-dir de S3 à S3A : xxx


1 commentaires

Je l'ai déjà essayé sans chance. J'ai aussi essayé avec le protocole S3N. Pouvez-vous me dire quelle version ami vous utilisez?



0
votes

@Makubex, j'ai pu importer après avoir ajouté S3A comme modèle URI,

Mais le temps pris par le travail d'importation est trop élevé.

J'utilise EMR 5.26.0. Dois-je faire un changement de configuration pour améliorer le temps?


1 commentaires

SQOOOP importer \ -Connect "JDBC: PostgreSQL: // hôte / dB" \ -Asername "utilisateur" \ --Password "pwd" \ - nom_ -table \ --Split-by 'col_name' \ --num- Mappeurs 50 \ --TARGET-DIR Nom \ --As-Parquefile



0
votes

Veuillez essayer de exécuter la commande sqoop comme spécifié ci-dessous:

sqoop import \
--connect "jdbc:postgresql://<machine_ip>:<port>/<database>?sslfactory=org.postgresql.ssl.NonValidatingFactory&ssl=true" \
--username <username> \
--password-file <password_file_path> \
--num-mappers 100 \
--split-by id \
--table addresses \
--as-parquetfile \
--target-dir s3://my-bucket/data/temp 


0 commentaires

1
votes

Il y a deux façons de sqoop à parquet -

  1. en utilisant - as-parquefile
  2. en utilisant hcatalog

    Mais les deux, ils ne sont pas possibles à Sqoop directement à parquet dans EMR 5.x

    problème avec l'approche -

    1. SQOP a utilisé le kite sdk pour lire / écrire du parquet et il a quelques limitations. Et ce n'est pas possible d'utiliser - as-parquefile . EMR supprimera le KITE SDK à l'avenir comme indiqué par le support AWS
    2. PARQUET DE SUPPORTER PARQUET VERS HCATALOG a été ajouté pour HIVE (V2.4.0, V2.3.7) jira carte et ruche (v3.0.0) Jira Carte . Mais EMR 5.x utilise la version 2.3.5.

      Qu'est-ce qui pourrait être une solution de contournement jusqu'à présent dans EMR (v5.x):

      Utilisez un texte intermédiaire Tableau pour extraire les données. Utilisez une requête de ruche séparée pour copier les données du texte à la table de parquet souhaitée.


0 commentaires

3
votes

Le KITE SDK a été mis à niveau. Tout ce que vous avez à faire est de télécharger le nouveau SDK dans EMR et d'exécuter la commande SQOOOOP à nouveau.

  1. Utilisez wget pour télécharger le KITE-DATA-S3-1.0.JAR LI> ol>
    wget https://repo1.maven.org/maven2/org/kitesdk/kite-data-s3/1.1.0/kite-data-s3-1.1.0.jar
    


0 commentaires