Seleziona le tue preferenze relative ai cookie

Utilizziamo cookie essenziali e strumenti simili necessari per fornire il nostro sito e i nostri servizi. Utilizziamo i cookie prestazionali per raccogliere statistiche anonime in modo da poter capire come i clienti utilizzano il nostro sito e apportare miglioramenti. I cookie essenziali non possono essere disattivati, ma puoi fare clic su \"Personalizza\" o \"Rifiuta\" per rifiutare i cookie prestazionali.

Se sei d'accordo, AWS e le terze parti approvate utilizzeranno i cookie anche per fornire utili funzionalità del sito, ricordare le tue preferenze e visualizzare contenuti pertinenti, inclusa la pubblicità pertinente. Per continuare senza accettare questi cookie, fai clic su \"Continua\" o \"Rifiuta\". Per effettuare scelte più dettagliate o saperne di più, fai clic su \"Personalizza\".

Copia dei dati tra DynamoDB e HDFS

Modalità Focus
Copia dei dati tra DynamoDB e HDFS - Amazon DynamoDB

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Se hai dati in una tabella DynamoDB, puoi usare Hive per copiare i dati nel file system distribuito Hadoop (). HDFS

Questa operazione può essere eseguita se si esegue un MapReduce processo che richiede dati provenienti da DynamoDB. Se copi i dati da DynamoDB HDFS in, Hadoop può elaborarli, utilizzando tutti i nodi disponibili nel cluster Amazon in parallelo. EMR Una volta completato il MapReduce lavoro, puoi scrivere i risultati da a. HDFS DDB

Negli esempi seguenti, Hive leggerà e scriverà HDFS nella seguente directory: /user/hadoop/hive-test

Nota

Gli esempi in questa sezione presuppongono che sia stata seguita la procedura in Tutorial: Utilizzo di Amazon DynamoDB e Apache Hive e che sia presente una tabella esterna in DynamoDB denominata ddb_features.

Copia di dati utilizzando il formato predefinito Hive

Esempio Da DynamoDB a HDFS

Usa un'INSERT OVERWRITEistruzione a cui scrivere direttamente. HDFS

INSERT OVERWRITE DIRECTORY 'hdfs:///user/hadoop/hive-test' SELECT * FROM ddb_features;

Il file di dati in HDFS ha il seguente aspetto:

920709^ASoldiers Farewell Hill^ASummit^ANM^A32.3564729^A-108.33004616135 1178153^AJones Run^AStream^APA^A41.2120086^A-79.25920781260 253838^ASentinel Dome^ASummit^ACA^A37.7229821^A-119.584338133 264054^ANeversweet Gulch^AValley^ACA^A41.6565269^A-122.83614322900 115905^AChacaloochee Bay^ABay^AAL^A30.6979676^A-87.97388530

Ogni campo è separato da un SOH carattere (inizio del titolo, 0x01). Nel file, SOH appare come. ^A

Esempio Da HDFS a DynamoDB
  1. Crea una tabella esterna mappata ai dati non formattati in. HDFS

    CREATE EXTERNAL TABLE hdfs_features_unformatted (feature_id BIGINT, feature_name STRING , feature_class STRING , state_alpha STRING, prim_lat_dec DOUBLE , prim_long_dec DOUBLE , elev_in_ft BIGINT) LOCATION 'hdfs:///user/hadoop/hive-test';
  2. Copiare i dati in DynamoDB.

    INSERT OVERWRITE TABLE ddb_features SELECT * FROM hdfs_features_unformatted;

Copia di dati con un formato specificato dall'utente

Se desideri utilizzare un carattere separatore di campo diverso, puoi creare una tabella esterna mappata alla directory. HDFS È possibile utilizzare questa tecnica per creare file di dati con valori separati da virgole (). CSV

Esempio Da DynamoDB a HDFS
  1. Crea una tabella esterna Hive a cui mappare. HDFS Quando si esegue questa operazione, assicurarsi che i tipi di dati siano coerenti con quelli della tabella esterna DynamoDB.

    CREATE EXTERNAL TABLE hdfs_features_csv (feature_id BIGINT, feature_name STRING , feature_class STRING , state_alpha STRING, prim_lat_dec DOUBLE , prim_long_dec DOUBLE , elev_in_ft BIGINT) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' LOCATION 'hdfs:///user/hadoop/hive-test';
  2. Copiare i dati da DynamoDB.

    INSERT OVERWRITE TABLE hdfs_features_csv SELECT * FROM ddb_features;

Il file di dati in HDFS ha il seguente aspetto:

920709,Soldiers Farewell Hill,Summit,NM,32.3564729,-108.3300461,6135 1178153,Jones Run,Stream,PA,41.2120086,-79.2592078,1260 253838,Sentinel Dome,Summit,CA,37.7229821,-119.58433,8133 264054,Neversweet Gulch,Valley,CA,41.6565269,-122.8361432,2900 115905,Chacaloochee Bay,Bay,AL,30.6979676,-87.9738853,0
Esempio Da HDFS a DynamoDB

Con una singola istruzione HiveQL, è possibile popolare la tabella DynamoDB utilizzando i dati di: HDFS

INSERT OVERWRITE TABLE ddb_features SELECT * FROM hdfs_features_csv;

Copia di dati senza mappature di colonne

È possibile copiare i dati da DynamoDB in formato raw e scriverli senza specificare alcun tipo HDFS di dati o mappatura di colonne. È possibile utilizzare questo metodo per creare un archivio di dati DynamoDB e archiviarlo. HDFS

Nota

Se la tabella DynamoDB contiene attributi di tipo Map, List, Boolean o Null, questo è l'unico modo per utilizzare Hive per copiare i dati da DynamoDB a. HDFS

Esempio Da DynamoDB a HDFS
  1. Crea una tabella esterna associata alla tabella DynamoDB. In questa istruzione HiveQL non c'è dynamodb.column.mapping.

    CREATE EXTERNAL TABLE ddb_features_no_mapping (item MAP<STRING, STRING>) STORED BY 'org.apache.hadoop.hive.dynamodb.DynamoDBStorageHandler' TBLPROPERTIES ("dynamodb.table.name" = "Features");

  2. Crea un'altra tabella esterna associata alla tua HDFS directory.

    CREATE EXTERNAL TABLE hdfs_features_no_mapping (item MAP<STRING, STRING>) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n' LOCATION 'hdfs:///user/hadoop/hive-test';
  3. Copia i dati da DynamoDB a. HDFS

    INSERT OVERWRITE TABLE hdfs_features_no_mapping SELECT * FROM ddb_features_no_mapping;

Il file di dati in HDFS ha il seguente aspetto:

Name^C{"s":"Soldiers Farewell Hill"}^BState^C{"s":"NM"}^BClass^C{"s":"Summit"}^BElevation^C{"n":"6135"}^BLatitude^C{"n":"32.3564729"}^BId^C{"n":"920709"}^BLongitude^C{"n":"-108.3300461"} Name^C{"s":"Jones Run"}^BState^C{"s":"PA"}^BClass^C{"s":"Stream"}^BElevation^C{"n":"1260"}^BLatitude^C{"n":"41.2120086"}^BId^C{"n":"1178153"}^BLongitude^C{"n":"-79.2592078"} Name^C{"s":"Sentinel Dome"}^BState^C{"s":"CA"}^BClass^C{"s":"Summit"}^BElevation^C{"n":"8133"}^BLatitude^C{"n":"37.7229821"}^BId^C{"n":"253838"}^BLongitude^C{"n":"-119.58433"} Name^C{"s":"Neversweet Gulch"}^BState^C{"s":"CA"}^BClass^C{"s":"Valley"}^BElevation^C{"n":"2900"}^BLatitude^C{"n":"41.6565269"}^BId^C{"n":"264054"}^BLongitude^C{"n":"-122.8361432"} Name^C{"s":"Chacaloochee Bay"}^BState^C{"s":"AL"}^BClass^C{"s":"Bay"}^BElevation^C{"n":"0"}^BLatitude^C{"n":"30.6979676"}^BId^C{"n":"115905"}^BLongitude^C{"n":"-87.9738853"}

Ogni campo inizia con un STX carattere (inizio del testo, 0x02) e termina con un ETX carattere (fine del testo, 0x03). Nel file, STX appare come e appare come^B. ETX ^C

Esempio Da HDFS a DynamoDB

Con una singola istruzione HiveQL, è possibile popolare la tabella DynamoDB utilizzando i dati di: HDFS

INSERT OVERWRITE TABLE ddb_features_no_mapping SELECT * FROM hdfs_features_no_mapping;

Accesso ai dati in HDFS

HDFSè un file system distribuito, accessibile a tutti i nodi del EMR cluster Amazon. Se lo utilizzi SSH per connetterti al nodo leader, puoi utilizzare gli strumenti a riga di comando per accedere ai dati su cui Hive ha scritto. HDFS

HDFSnon è la stessa cosa del file system locale sul nodo leader. Non è possibile lavorare con file e directory HDFS utilizzando comandi Linux standard (comecat, cpmv, orm). Invece, queste attività vengono eseguite utilizzando il comando hadoop fs.

I passaggi seguenti sono scritti presupponendo che i dati siano stati copiati da DynamoDB HDFS utilizzando una delle procedure di questa sezione.

  1. Se ti trovi attualmente al prompt dei comandi di Hive, passa al prompt dei comandi di Linux.

    hive> exit;
  2. Elenca il contenuto della directory -test inthe /user/hadoop/hive. HDFS Questo è il percorso in cui Hive ha copiato i dati da DynamoDB.

    hadoop fs -ls /user/hadoop/hive-test

    La risposta dovrebbe essere simile alla seguente:

    Found 1 items -rw-r--r-- 1 hadoop hadoop 29504 2016-06-08 23:40 /user/hadoop/hive-test/000000_0

    Il nome del file (000000_0) è generato dal sistema.

  3. Visualizzare il contenuto del file :

    hadoop fs -cat /user/hadoop/hive-test/000000_0
    Nota

    In questo esempio, il file è relativamente piccolo (circa 29 KB). Fare attenzione quando si utilizza questo comando con file molto grandi o contenenti caratteri non stampabili.

  4. (Facoltativo) È possibile copiare il file HDFS di dati dal file system locale sul nodo leader. Successivamente, sarà possibile utilizzare le utilità della riga di comando Linux standard per lavorare con i dati nel file.

    hadoop fs -get /user/hadoop/hive-test/000000_0

    Questo comando non sovrascriverà il file.

    Nota

    Il file system locale sul nodo principale ha una capacità limitata. Non utilizzare questo comando con file più grandi dello spazio disponibile nel file system locale.

PrivacyCondizioni del sitoPreferenze cookie
© 2025, Amazon Web Services, Inc. o società affiliate. Tutti i diritti riservati.