Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Erfahren Sie, wie Sie Apache Sqoop zum Importieren und Exportieren von Daten zwischen Azure SQL-Datenbank und Azure Data Lake Storage Gen1 verwenden.
Was ist Sqoop?
Big Data-Anwendungen sind eine natürliche Wahl für die Verarbeitung unstrukturierter und halbstrukturierter Daten, z. B. Protokolle und Dateien. Möglicherweise müssen Sie jedoch auch strukturierte Daten verarbeiten, die in relationalen Datenbanken gespeichert sind.
Apache Sqoop ist ein Tool zum Übertragen von Daten zwischen relationalen Datenbanken und einem Big Data-Repository, z. B. Data Lake Storage Gen1. Sie können sie verwenden, um Daten aus einem relationalen Datenbankverwaltungssystem (RDBMS) wie Azure SQL-Datenbank in Data Lake Storage Gen1 zu importieren. Anschließend können Sie die Daten mithilfe von Big Data-Workloads transformieren und analysieren und dann die Daten wieder in ein RDBMS exportieren. In diesem Artikel verwenden Sie eine Datenbank in Azure SQL-Datenbank als relationale Datenbank, aus der Sie importieren/exportieren können.
Voraussetzungen
Bevor Sie beginnen, benötigen Sie Folgendes:
- Ein Azure-Abonnement. Siehe Kostenlose Azure-Testversion.
- Ein Azure Data Lake Storage Gen1-Konto. Anweisungen zum Erstellen des Kontos finden Sie unter "Erste Schritte mit Azure Data Lake Storage Gen1"
- Azure HDInsight-Cluster mit Zugriff auf ein Data Lake Storage Gen1-Konto. Siehe Erstellen eines HDInsight-Clusters mit Data Lake Storage Gen1. In diesem Artikel wird davon ausgegangen, dass Sie über einen HDInsight Linux-Cluster mit Data Lake Storage Gen1-Zugriff verfügen.
- Azure SQL-Datenbank. Anweisungen zum Erstellen einer Datenbank in azure SQL-Datenbank finden Sie unter Erstellen einer Datenbank in azure SQL-Datenbank
Erstellen von Beispieltabellen in der Datenbank
Erstellen Sie zunächst zwei Beispieltabellen in der Datenbank. Verwenden Sie SQL Server Management Studio oder Visual Studio, um eine Verbindung mit der Datenbank herzustellen, und führen Sie dann die folgenden Abfragen aus.
Tabelle1 erstellen
CREATE TABLE [dbo].[Table1]( [ID] [int] NOT NULL, [FName] [nvarchar](50) NOT NULL, [LName] [nvarchar](50) NOT NULL, CONSTRAINT [PK_Table_1] PRIMARY KEY CLUSTERED ( [ID] ASC ) ) ON [PRIMARY] GOTabelle2 erstellen
CREATE TABLE [dbo].[Table2]( [ID] [int] NOT NULL, [FName] [nvarchar](50) NOT NULL, [LName] [nvarchar](50) NOT NULL, CONSTRAINT [PK_Table_2] PRIMARY KEY CLUSTERED ( [ID] ASC ) ) ON [PRIMARY] GOFühren Sie den folgenden Befehl aus, um Tabelle1 einige Beispieldaten hinzuzufügen. Lassen Sie Tabelle2 leer. Später importieren Sie Daten aus Tabelle1 in Data Lake Storage Gen1. Anschließend exportieren Sie Daten aus Data Lake Storage Gen1 in Tabelle2.
INSERT INTO [dbo].[Table1] VALUES (1,'Neal','Kell'), (2,'Lila','Fulton'), (3, 'Erna','Myers'), (4,'Annette','Simpson');
Verwenden von Sqoop von einem HDInsight-Cluster mit Zugriff auf Data Lake Storage Gen1
Ein HDInsight-Cluster verfügt bereits über die Sqoop-Pakete. Wenn Sie den HDInsight-Cluster für die Verwendung von Data Lake Storage Gen1 als zusätzlichen Speicher konfiguriert haben, können Sie Sqoop (ohne Konfigurationsänderungen) verwenden, um Daten zwischen einer relationalen Datenbank wie Azure SQL-Datenbank und einem Data Lake Storage Gen1-Konto zu importieren/zu exportieren.
In diesem Artikel wird davon ausgegangen, dass Sie einen Linux-Cluster erstellt haben, damit Sie SSH zum Herstellen einer Verbindung mit dem Cluster verwenden sollten. Siehe Verbindung zu einem Linux-basierten HDInsight-Cluster herstellen.
Überprüfen Sie, ob Sie über den Cluster auf das Data Lake Storage Gen1-Konto zugreifen können. Führen Sie den folgenden Befehl über die SSH-Eingabeaufforderung aus:
hdfs dfs -ls adl://<data_lake_storage_gen1_account>.azuredatalakestore.net/Dieser Befehl enthält eine Liste von Dateien/Ordnern im Data Lake Storage Gen1-Konto.
Importieren von Daten aus der Azure SQL-Datenbank in Data Lake Storage Gen1
Navigieren Sie zu dem Verzeichnis, in dem Sqoop-Pakete verfügbar sind. In der Regel ist dieser Speicherort
/usr/hdp/<version>/sqoop/bin.Importieren Sie die Daten aus Tabelle1 in das Data Lake Storage Gen1-Konto. Verwenden Sie die folgende Syntax:
sqoop-import --connect "jdbc:sqlserver://<sql-database-server-name>.database.windows.net:1433;username=<username>@<sql-database-server-name>;password=<password>;database=<sql-database-name>" --table Table1 --target-dir adl://<data-lake-storage-gen1-name>.azuredatalakestore.net/Sqoop/SqoopImportTable1Der Platzhalter "sql-database-server-name " stellt den Namen des Servers dar, auf dem die Datenbank ausgeführt wird. Der Platzhalter "sql-database-name" stellt den tatsächlichen Datenbanknamen dar.
Beispiel:
sqoop-import --connect "jdbc:sqlserver://mysqoopserver.database.windows.net:1433;username=user1@mysqoopserver;password=<password>;database=mysqoopdatabase" --table Table1 --target-dir adl://myadlsg1store.azuredatalakestore.net/Sqoop/SqoopImportTable1Stellen Sie sicher, dass die Daten an das Data Lake Storage Gen1-Konto übertragen wurden. Führen Sie den folgenden Befehl aus:
hdfs dfs -ls adl://hdiadlsg1store.azuredatalakestore.net/Sqoop/SqoopImportTable1/Sie sollten die folgende Ausgabe sehen.
-rwxrwxrwx 0 sshuser hdfs 0 2016-02-26 21:09 adl://hdiadlsg1store.azuredatalakestore.net/Sqoop/SqoopImportTable1/_SUCCESS -rwxrwxrwx 0 sshuser hdfs 12 2016-02-26 21:09 adl://hdiadlsg1store.azuredatalakestore.net/Sqoop/SqoopImportTable1/part-m-00000 -rwxrwxrwx 0 sshuser hdfs 14 2016-02-26 21:09 adl://hdiadlsg1store.azuredatalakestore.net/Sqoop/SqoopImportTable1/part-m-00001 -rwxrwxrwx 0 sshuser hdfs 13 2016-02-26 21:09 adl://hdiadlsg1store.azuredatalakestore.net/Sqoop/SqoopImportTable1/part-m-00002 -rwxrwxrwx 0 sshuser hdfs 18 2016-02-26 21:09 adl://hdiadlsg1store.azuredatalakestore.net/Sqoop/SqoopImportTable1/part-m-00003Jede Part-m-*-Datei entspricht einer Zeile in der Quelltabelle "Table1". Sie können den Inhalt der Part-m-*-Dateien anzeigen, um dies zu überprüfen.
Exportieren von Daten aus Data Lake Storage Gen1 in azure SQL-Datenbank
Exportieren Sie die Daten aus dem Data Lake Storage Gen1-Konto in die leere Tabelle Table2 in der Azure SQL-Datenbank. Verwenden Sie die folgende Syntax.
sqoop-export --connect "jdbc:sqlserver://<sql-database-server-name>.database.windows.net:1433;username=<username>@<sql-database-server-name>;password=<password>;database=<sql-database-name>" --table Table2 --export-dir adl://<data-lake-storage-gen1-name>.azuredatalakestore.net/Sqoop/SqoopImportTable1 --input-fields-terminated-by ","Beispiel:
sqoop-export --connect "jdbc:sqlserver://mysqoopserver.database.windows.net:1433;username=user1@mysqoopserver;password=<password>;database=mysqoopdatabase" --table Table2 --export-dir adl://myadlsg1store.azuredatalakestore.net/Sqoop/SqoopImportTable1 --input-fields-terminated-by ","Überprüfen Sie, ob die Daten in die SQL-Datenbanktabelle hochgeladen wurden. Verwenden Sie SQL Server Management Studio oder Visual Studio, um eine Verbindung mit der Azure SQL-Datenbank herzustellen, und führen Sie dann die folgende Abfrage aus.
SELECT * FROM TABLE2Dieser Befehl sollte die folgende Ausgabe haben.
ID FName LName ------------------- 1 Neal Kell 2 Lila Fulton 3 Erna Myers 4 Annette Simpson
Überlegungen zur Leistung bei der Verwendung von Sqoop
Informationen zur Leistungsoptimierung Ihres Sqoop-Auftrags zum Kopieren von Daten in Data Lake Storage Gen1 finden Sie im Blogbeitrag "Sqoop Performance".