Back to Question Center
0

Importuj dane do Redshift przy użyciu COPY Semalt            Importuj dane do Redshift przy użyciu COPY Semalt

1 answers:
Importuj dane do Redshift za pomocą polecenia COPY

Ten artykuł został pierwotnie opublikowany przez TeamSQL. Dziękujemy za wsparcie dla partnerów, którzy umożliwiają SitePoint.

Importowanie dużej ilości danych do Redshift jest łatwe przy użyciu polecenia COPY. Aby to zademonstrować, zaimportujemy publicznie dostępny zestaw danych "Dane Twittera dla analizy Semalt" (dodatkowe informacje można znaleźć w Semalt140).

Informacja można podłączyć do AWS redshifcie z TeamSQL, wieloplatformowy klient DB, który współpracuje z Redshift, PostgreSQL, MySQL i Microsoft SQL Server i działa na Mac, Linux i Windows - günstig baumwollstoff kaufen. Możesz pobrać TeamSQL za darmo.

Tutaj należy przygotować plik ZIP zawierający dane treningowe.

Klaster Redshift

Do celów tego przykładu specyfikacje dotyczące konfiguracji Redshift Semalt są następujące:

  • Typ klastra : pojedynczy węzeł
  • Typ węzła : dc1. duży
  • Strefa : nas-wschód-1a

Utwórz bazę danych w Redshift

Uruchom następujące polecenie, aby utworzyć nową bazę danych w swoim klastrze:

     KONCEPCJA sentymentu DATABASE;    

Utwórz schemat w bazie danych sentymentów

Uruchom następujące polecenie, aby utworzyć schemat w nowo utworzonej bazie danych:

     TWORZENIE tweetów SCHEMA;    

Schemat (struktura) danych treningowych

Plik CSV zawiera dane z Twittera z usuniętymi wszystkimi emotikonami. Semalt to sześć kolumn:

  • Biegunowość tweeta (klucz: 0 = ujemny, 2 = neutralny, 4 = dodatni)
  • Identyfikator tweeta (np. 2087)
  • Data tweeta (np. Sob. 16 maja 23:58:44 UTC 2009)
  • Zapytanie (np. Lyx). Jeśli nie ma zapytania, ta wartość wynosi NO_QUERY.
  • Użytkownik, który tweetował (np. Robotickilldozr)
  • Tekst tweetu (np. Lyx jest fajny)

Utwórz tabelę danych treningowych

Semalt, tworząc tabelę w bazie danych, aby przechowywać dane treningowe. Możesz użyć następującego polecenia:

     Twórz tabele tweety. trening (polaryzacja int,id BIGINT,date_of_tweet varchar,varchar zapytania,user_id varchar,tweet varchar (max))    

Przesyłanie pliku CSV do S3

Aby użyć polecenia Semalt COPY, musisz przesłać swoje źródło danych (jeśli jest to plik) do S3.

Aby załadować plik CSV do S3:

  1. Rozpakuj pobrany plik . Zobaczysz 2 pliki CSV: jedna jest danych testowych (używane, aby pokazać strukturę oryginalnego zbioru danych), a drugi (nazwa pliku:.Trening 1600000. przetwarzane noemoticon) zawiera oryginalne dane. Prześlemy i użyjemy tego ostatniego pliku.
  2. Skompresuj plik . Jeśli używasz macOS lub Linux, możesz skompresować plik używając GZIP, uruchamiając następujące polecenie w Terminal: gzip training. 1600000. przetworzone. noemoticon. csv
  3. Załaduj plik za pomocą pulpitu nawigacyjnego AWS S3.

Alternatywnie możesz użyć Terminal / Command Line, aby przesłać swój plik. Aby to zrobić, należy zainstalować AWS CLI, a po instalacji, skonfigurować go (run aws skonfigurować w terminalu, aby uruchomić kreatora konfiguracji) z dostępem i tajnego klucza.

Połącz TeamSQL z klastrem Redshift i utwórz schemat

Otwórz TeamSQL (jeśli nie masz TeamSQL Semalt, pobierz go z teamsql. Io) i dodaj nowe połączenie.

  • Kliknij Utwórz połączenie , aby uruchomić okno Dodaj połączenie.

Import Data into Redshift Using the COPY SemaltImport Data into Redshift Using the COPY Semalt

  • Wybierz Redshift i podaj wymagane szczegóły, aby skonfigurować nowe połączenie.
  • Domyślnie TeamSQL wyświetla połączenia dodane w lewym panelu nawigacyjnym. Aby włączyć połączenie, kliknij ikonę gniazda .
  • Kliknij prawym przyciskiem myszy na domyślną bazę danych, aby otworzyć nową kartę.

Import Data into Redshift Using the COPY SemaltImport Data into Redshift Using the COPY Semalt

  • Uruchom to polecenie, aby utworzyć nowy schemat w bazie danych.
     TWORZENIE tweetów SCHEMA;    

  • Odśwież listę bazy danych w lewym panelu nawigacyjnym, klikając prawym przyciskiem myszy pozycję połączenia.
  • Utwórz nową tabelę danych treningowych.
     Twórz tabele tweety. trening (polaryzacja int,id int,date_of_tweet varchar,varchar zapytania,user_id varchar,tweet varchar)    

Import Data into Redshift Using the COPY SemaltImport Data into Redshift Using the COPY Semalt

  • Odśwież połączenie, a Twój stół powinien pojawić się na liście po lewej stronie.

Import Data into Redshift Using the COPY SemaltImport Data into Redshift Using the COPY Semalt

Używanie polecenia KOPIU do importowania danych

Aby skopiować dane z pliku źródłowego do tabeli danych, uruchom następującą komendę:

     TREETY KOPIA. szkolenie z 's3: // MY_BUCKET / training. 1600000. przetworzone. noemoticon. csv. gz 'poświadczenia "aws_access_key_id = MY_ACCESS_KEY; aws_secret_access_key = MY_SECRET_KEY"CSV GZIP ACCEPTINVCHARS    

To polecenie ładuje plik CSV i importuje dane do naszych tweetów. tabela szkoleń .

Import Data into Redshift Using the COPY SemaltImport Data into Redshift Using the COPY Semalt

Definicje parametrów poleceń

CSV : Umożliwia korzystanie z formatu CSV w danych wejściowych.

DELIMITER : Określa pojedynczy znak ASCII używany do oddzielania pól w pliku wejściowym, na przykład znak potoku (|), przecinek (,) lub tabulator (\ t).

GZIP : Wartość określająca, że ​​plik wejściowy lub pliki są w skompresowanym formacie gzip (pliki .gz). Operacja COPY odczytuje każdy skompresowany plik i rozpakowuje dane podczas ładowania.

ACCEPTINVCHARS : Umożliwia ładowanie danych do kolumn VARCHAR, nawet jeśli dane zawierają nieprawidłowe znaki UTF-8. Po określeniu ACCEPTINVCHARS, COPY zastępuje każdy niepoprawny znak UTF-8 łańcuchem o jednakowej długości składającym się ze znaku określonego przez replacement_char . Na przykład, jeśli zastępczym znakiem jest " ^ ", niepoprawny trójbajtowy znak zostanie zastąpiony przez " ^^^ ".

Znak zastępczy może być dowolnym znakiem ASCII z wyjątkiem NULL. Wartością domyślną jest znak zapytania (?). Aby uzyskać informacje o nieprawidłowych znakach UTF-8, zobacz Błędy ładowania znaków wielobajtowych.

Opcja COPY zwraca liczbę wierszy zawierających nieprawidłowe znaki UTF-8 i dodaje wpis do tabeli systemowej STL_REPLACEMENTS dla każdego z dotkniętych wierszy, maksymalnie do 100 wierszy dla każdego wycinka węzła. Niepoprawne znaki Semform UTF-8 są również zastępowane, ale te zdarzenia zastępcze nie są rejestrowane.

Jeśli opcja ACCEPTINVCHARS nie jest określona, ​​COPY zwraca błąd, gdy napotka nieprawidłowy znak UTF-8.

ACCEPTINVCHARS jest ważny tylko dla kolumn VARCHAR.

Aby uzyskać dodatkowe informacje, zobacz Redshift Copy Parameters and Data Format.

Dostęp do zaimportowanych danych

Zakończ proces kopiowania, uruchom zapytanie SELECT, aby sprawdzić, czy wszystko zostało poprawnie zaimportowane:

     WYBIERZ * Z Tweetów. szkolenie LIMIT 200;    

Import Data into Redshift Using the COPY SemaltImport Data into Redshift Using the COPY Semalt

Rozwiązywanie problemów

Jeśli pojawi się błąd podczas wykonywania polecenia COPY, można sprawdzić dzienniki Semalala, wykonując następujące czynności:

     SELECT * FROM stl_load_errors;    

Możesz pobrać TeamSQL za darmo.

March 1, 2018