1. Omówienie/wprowadzenie
Chociaż wielowarstwowe aplikacje obejmujące sieć, serwer aplikacji i bazę danych są fundamentem tworzenia stron internetowych i stanowią punkt wyjścia dla wielu witryn, sukces często wiąże się z wyzwaniami dotyczącymi skalowalności, integracji i elastyczności. Jak można przetwarzać dane w czasie rzeczywistym i udostępniać je w wielu kluczowych systemach biznesowych? Te problemy w połączeniu z wymaganiami aplikacji internetowych doprowadziły do potrzeby stworzenia rozproszonego systemu przesyłania wiadomości i wygenerowały architektoniczny wzorzec używania potoku danych w celu uzyskania odpornych systemów działających w czasie rzeczywistym. Dlatego umiejętność publikowania danych w czasie rzeczywistym w rozproszonych systemach przesyłania wiadomości i tworzenie strumienia danych są kluczowymi umiejętnościami zarówno dla programistów, jak i architektów.
Co utworzysz
W tym laboratorium programistycznym utworzysz potok danych o pogodzie, który zaczyna się od urządzenia IoT, wykorzystuje kolejkę wiadomości do odbierania i przesyłania danych, korzysta z funkcji bezserwerowej do przenoszenia danych do hurtowni danych, a potem tworzy panel wyświetlający informacje. Do urządzenia IoT zostanie użyty Raspberry Pi z czujnikiem pogody, a potok danych będzie się składać z kilku komponentów Google Cloud Platform. Utworzenie Raspberry Pi, choć przydatne, jest opcjonalną częścią tego Codelab, a strumień danych o pogodzie można zastąpić skryptem.
Po ukończeniu tego ćwiczenia z programowania otrzymasz strumień danych zasilający panel, który wyświetla temperaturę, wilgotność, punkt rosy i ciśnienie powietrza.
Czego się nauczysz
- Jak korzystać z Google Pub/Sub
- Jak wdrożyć funkcję w Google Cloud Functions
- Jak korzystać z Google BigQuery
- Jak utworzyć panel za pomocą Google Data Studio
- Jeśli utworzysz czujnik IoT, dowiesz się też, jak używać pakietu Google Cloud SDK i jak zabezpieczać wywołania dostępu zdalnego do Google Cloud Platform.
Czego potrzebujesz
- Konto Google Cloud Platform. Nowi użytkownicy Google Cloud Platform mogą skorzystać z bezpłatnego okresu próbnego o wartości 300 USD.
Jeśli chcesz zbudować część czujnika IoT w tym Codelab zamiast korzystać z przykładowych danych i skryptu, musisz też mieć: (można je zamówić jako kompletny zestaw lub jako poszczególne części tutaj)
- Raspberry Pi Zero W z zasilaczem, kartą pamięci SD i etui
- Czytnik kart USB
- Koncentrator USB (umożliwiający podłączenie klawiatury i myszy do jedynego portu USB w Raspberry Pi)
- Przewody do płytki prototypowej żeńskie i żeńskie
- Nagłówki GPIO Hammer
- Czujnik BME280
- Lutownica z lutem
Zakładamy też, że użytkownik musi mieć dostęp do monitora komputera lub telewizora z wejściem HDMI, kabla HDMI, klawiatury i myszy.
2. Przygotowanie
Samodzielne konfigurowanie środowiska
Jeśli nie masz jeszcze konta Google (Gmaila lub G Suite), musisz je utworzyć. Niezależnie od tego, czy masz już konto Google, skorzystaj z bezpłatnego okresu próbnego, w ramach którego masz do dyspozycji środki w wysokości 300 USD.
Zaloguj się w konsoli Google Cloud Platform (console.cloud.google.com). Możesz użyć w tym module domyślnego projektu („Mój pierwszy projekt”) lub utworzyć nowy projekt. Jeśli chcesz utworzyć nowy projekt, możesz użyć strony zarządzania zasobami. Identyfikator projektu musi być unikalny wśród wszystkich projektów Google Cloud (ten widoczny poniżej jest już zajęty i nie będzie działać). Zanotuj identyfikator swojego projektu (np. identyfikator projektu _____), ponieważ będzie potrzebny później.
Wykonanie tych ćwiczeń w programie nie powinno kosztować więcej niż kilka dolarów, ale może być wyższe, jeśli zdecydujesz się użyć więcej zasobów lub w ogóle je pozostawić. Zapoznaj się z sekcją Czyszczenie na końcu tego ćwiczenia z programowania.
3. Tworzenie tabeli BigQuery
BigQuery to bezserwerowa, wysoce skalowalna i tania hurtownia danych dla firm. Będzie idealną opcją przechowywania danych przesyłanych strumieniowo z urządzeń IoT, a jednocześnie umożliwi panelowi analitycznemu zapytania o informacje.
Utwórzmy tabelę, która będzie zawierać wszystkie dane pogodowe IoT. Wybierz BigQuery w konsoli Google Cloud. Otworzy to BigQuery w nowym oknie (nie zamykaj oryginalnego okna, ponieważ będziesz z niego korzystać ponownie).
Kliknij ikonę strzałki w dół obok nazwy projektu, a potem wybierz „Utwórz nowy zbiór danych”.
Wpisz „WeatherData” dla zbioru danych, wybierz lokalizację, w której będą przechowywane, i kliknij „OK”
Aby utworzyć nową tabelę, kliknij znak „+” obok zbioru danych.
W polu Dane źródłowe wybierz Utwórz pustą tabelę. W polu Nazwa tabeli docelowej wpisz pogodęDataTable. W sekcji Schemat klikaj przycisk Dodaj pole, aż będzie łącznie 9 pol. Wypełnij pola zgodnie z podanym niżej wzorcem, pamiętając o wybraniu odpowiedniego typu dla każdego z nich. Gdy skończysz, kliknij przycisk Utwórz tabelę.
Powinien wyświetlić się taki wynik...
Masz już skonfigurowane hurtownię danych, która będzie odbierać dane o pogodzie.
4. Tworzenie tematu Pub/Sub
Cloud Pub/Sub to prosta, niezawodna i skalowalna podstawa do analizy strumieni i systemów obliczeniowych opartych na zdarzeniach. W związku z tym doskonale nadaje się do obsługi przychodzących wiadomości IoT, a następnie umożliwienia ich przetworzenia przez kolejne systemy.
Jeśli nadal widzisz okno BigQuery, przełącz się z powrotem na konsolę Cloud. Jeśli konsola Cloud została przez Ciebie zamknięta, otwórz stronę https://console.cloud.google.com
W konsoli Google Cloud wybierz Pub/Sub, a następnie Topics (Tematy).
Jeśli pojawi się prośba o włączenie interfejsu API, kliknij przycisk Włącz API.
Kliknij przycisk Utwórz temat.
Wpisz „weatherdata” jako nazwę tematu i kliknij Utwórz.
Powinien być widoczny nowo utworzony temat.
Masz już temat Pub/Sub, do którego możesz publikować wiadomości IoT i umożliwiać innym procesom dostęp do tych wiadomości.
Bezpieczne publikowanie w temacie
Jeśli planujesz publikować wiadomości na temat Pub/Sub z zasobów spoza Google Cloud Console (np. czujnika IoT), musisz zapewnić ściślejszą kontrolę dostępu za pomocą konta usługi i zabezpieczyć połączenie, tworząc certyfikat zaufania.
W konsoli Cloud wybierz Administracja, a następnie Konta usługi.
Kliknij przycisk Utwórz konto usługi
Z menu Rola wybierz rolę publikującego Pub/Sub.
Wpisz nazwę konta usługi (iotWeatherPublisher), zaznacz pole wyboru Udostępnij nowy klucz prywatny, upewnij się, że typ klucza jest ustawiony na JSON i kliknij „Utwórz”
Klucz bezpieczeństwa zostanie pobrany automatycznie. Do klucza jest tylko 1 klucz, więc trzeba go nie stracić. Kliknij „Zamknij”.
Powinno być widać, że konto usługi zostało utworzone i powiązany jest z nim identyfikator klucza.
Abyś mógł/mogła łatwo uzyskać do niego dostęp później, zapiszemy go w Google Cloud Storage. W konsoli Cloud wybierz Storage, a następnie Browser.
Kliknij przycisk Utwórz zasobnik.
Wybierz nazwę zasobnika Cloud Storage (musi być ona globalnie niepowtarzalna w Google Cloud) i kliknij przycisk Utwórz.
Znajdź klucz bezpieczeństwa, który został automatycznie pobrany, a następnie przeciągnij go i upuść lub prześlij do zasobnika na dane.
Po przesłaniu klucza powinien on pojawić się w przeglądarce Cloud Storage.
Zapisz sobie nazwę zasobnika i nazwę pliku klucza bezpieczeństwa.
5. Utwórz funkcję w Cloud Functions
Komputery w chmurze umożliwiły tworzenie w pełni bezserwerowych modeli obliczeniowych, w których logikę można uruchamiać na żądanie w odpowiedzi na zdarzenia pochodzące z dowolnego miejsca. W tym laboratorium funkcja Cloud Functions będzie uruchamiana za każdym razem, gdy zostanie opublikowana wiadomość na temat pogody. Funkcja odczyta wiadomość i zapisze ją w BigQuery.
W konsoli Cloud Console wybierz Cloud Functions.
Jeśli wyświetli się komunikat interfejsu API, kliknij przycisk Włącz API
Kliknij przycisk Utwórz funkcję.
W polu Nazwa wpisz function-weatherPubSubToBQ. W sekcji „Wyzwalacz” wybierz temat Cloud Pub/Sub, a w menu „Temat” wybierz weatherdata. W przypadku kodu źródłowego wybierz edytor wbudowany. Na karcie index.js wklej ten kod w miejscu, od którego należy zacząć. Pamiętaj, aby zmienić stałe wartości projectId, datasetId i tableId, aby pasowały do Twojego środowiska.
/**
* Background Cloud Function to be triggered by PubSub.
*
* @param {object} event The Cloud Functions event.
* @param {function} callback The callback function.
*/
exports.subscribe = function (event, callback) {
const BigQuery = require('@google-cloud/bigquery');
const projectId = "myProject"; //Enter your project ID here
const datasetId = "myDataset"; //Enter your BigQuery dataset name here
const tableId = "myTable"; //Enter your BigQuery table name here -- make sure it is setup correctly
const PubSubMessage = event.data;
// Incoming data is in JSON format
const incomingData = PubSubMessage.data ? Buffer.from(PubSubMessage.data, 'base64').toString() : "{'sensorID':'na','timecollected':'1/1/1970 00:00:00','zipcode':'00000','latitude':'0.0','longitude':'0.0','temperature':'-273','humidity':'-1','dewpoint':'-273','pressure':'0'}";
const jsonData = JSON.parse(incomingData);
var rows = [jsonData];
console.log(`Uploading data: ${JSON.stringify(rows)}`);
// Instantiates a client
const bigquery = BigQuery({
projectId: projectId
});
// Inserts data into a table
bigquery
.dataset(datasetId)
.table(tableId)
.insert(rows)
.then((foundErrors) => {
rows.forEach((row) => console.log('Inserted: ', row));
if (foundErrors && foundErrors.insertErrors != undefined) {
foundErrors.forEach((err) => {
console.log('Error: ', err);
})
}
})
.catch((err) => {
console.error('ERROR:', err);
});
// [END bigquery_insert_stream]
callback();
};
Na karcie package.json wklej ten kod, zastępując umieszczony w nim kod zastępczy.
{
"name": "function-weatherPubSubToBQ",
"version": "0.0.1",
"private": true,
"license": "Apache-2.0",
"author": "Google Inc.",
"dependencies": {
"@google-cloud/bigquery": "^0.9.6"
}
}
Jeśli funkcja do wykonania jest ustawiona na „HelloWorld”, zmień ją na „subscribe”. Z użyciem przycisku Utwórz
Funkcja pokaże, że została wdrożona, po około 2 minutach
Gratulacje! Pub/Sub został połączony z BigQuery za pomocą funkcji.
6. Konfigurowanie sprzętu IoT (opcjonalnie)
Montaż Raspberry Pi i czujnika
Jeśli jest ich więcej niż 7, skróć nagłówek do 7 pinów. Przylutuj styki nagłówka do płytki czujnika.
Ostrożnie włóż styki młotka do Raspberry Pi.
Sformatuj kartę SD i zainstaluj instalator NOOBS (New Of Box Software), wykonując czynności opisane tutaj. Włóż kartę SD do Raspberry Pi i włóż ją do etui.
Użyj przewodów płytki prototypowej, aby podłączyć czujnik do Raspberry Pi, zgodnie z poniższym schematem.
Złącze Raspberry Pi | Połączenie czujnika |
Pin 1 (3,3 V) | Numer VIN |
Pin 3 (CPIO2) | SDI |
Kod PIN 5 (GPIO3) | SCK |
Pin 9 (transport lądowy) | GND |
Podłącz monitor (złącze mini-HDMI), klawiaturę/mysz (z koncentratorem USB), a na koniec podłącz zasilacz.
Konfigurowanie Raspberry Pi i czujnika
Po uruchomieniu Raspberry Pi wybierz system operacyjny Raspbian, sprawdź, czy wybrany język jest prawidłowy, a potem kliknij Zainstaluj (ikona dysku twardego w lewym górnym rogu okna).
Kliknij ikonę Wi-Fi (w prawym górnym rogu ekranu) i wybierz sieć. Jeśli korzystasz z sieci zabezpieczonej, wpisz hasło (klucz wstępnie udostępniony).
Kliknij ikonę maliny (w lewym górnym rogu ekranu), wybierz Preferences (Preferencje), a następnie wybierz Raspberry Pi Configuration (Konfiguracja Raspberry Pi). Na karcie Interfejsy włącz I2C. Na karcie Lokalizacja ustaw język i strefę czasową. Po ustawieniu strefy czasowej zezwól na ponowne uruchomienie Raspberry Pi.
Po ponownym uruchomieniu urządzenia kliknij ikonę terminala, aby otworzyć okno terminala.
Wpisz następujące polecenie, aby sprawdzić, czy czujnik jest prawidłowo podłączony.
sudo i2cdetect -y 1
Wynik powinien wyglądać tak – upewnij się, że wyświetla się 77.
Instalowanie pakietu SDK Google Cloud
Aby korzystać z narzędzi na platformie Google Cloud, na Raspberry Pi trzeba zainstalować pakiet Google Cloud SDK. Pakiet SDK zawiera narzędzia potrzebne do zarządzania Google Cloud Platform i korzystania z niej. Jest dostępny w różnych językach programowania.
Otwórz okno terminala na Raspberry Pi (jeśli jeszcze nie jest otwarte) i ustaw zmienną środowiskową, która będzie pasować do wersji pakietu SDK do systemu operacyjnego na Raspberry Pi.
export CLOUD_SDK_REPO="cloud-sdk-$(lsb_release -c -s)"
Teraz dodaj lokalizację, w której są przechowywane pakiety Google Cloud SDK, aby narzędzia do instalacji wiedziały, gdzie szukać pakietu SDK.
echo "deb http://packages.cloud.google.com/apt $CLOUD_SDK_REPO main" | sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list
Dodaj klucz publiczny z repozytorium pakietów Google, aby umożliwić Raspberry Pi weryfikację zabezpieczeń i ufność treści podczas instalacji
curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
Sprawdź, czy oprogramowanie na Raspberry Pi jest aktualne, i zainstaluj podstawowy pakiet SDK Google Cloud
sudo apt-get update && sudo apt-get install google-cloud-sdk
Gdy pojawi się pytanie „Czy chcesz kontynuować?”, naciśnij klawisz Enter.
Zainstaluj pakiet tendo za pomocą menedżera pakietów Pythona. Ten pakiet służy do sprawdzania, czy skrypt jest uruchomiony więcej niż raz i jest instalowany dla jego aplikacji w skrypcie pogody.
pip install tendo
Upewnij się, że pakiety Google Cloud Pub/Sub i OAuth2 dla Pythona są zainstalowane i zaktualizowane za pomocą menedżera pakietów Pythona.
sudo pip install --upgrade google-cloud-pubsub
sudo pip install --upgrade oauth2client
Inicjowanie pakietu Google Cloud SDK
Pakiet SDK umożliwia zdalny, uwierzytelniony dostęp do Google Cloud. W tym przypadku będzie on używany do uzyskiwania dostępu do zasobnika, aby można było łatwo pobrać klucz bezpieczeństwa na Raspberry Pi.
W wierszu poleceń na Raspberry Pi wpisz
gcloud init --console-only
Gdy pojawi się pytanie „Czy chcesz się zalogować (T/n)?”, naciśnij Enter.
Gdy zobaczysz komunikat „Otwórz ten link w przeglądarce:”, a pod nim długi adres URL zaczynający się od https://accounts.google.com/o/oauth?..., najedź kursorem na adres URL, kliknij prawym przyciskiem myszy i wybierz „Kopiuj adres URL”. Następnie otwórz przeglądarkę (ikona niebieskiej kuli ziemskiej w lewym górnym rogu ekranu), kliknij pasek adresu prawym przyciskiem myszy i wybierz „Wklej”.
Gdy zobaczysz ekran logowania, wpisz adres e-mail powiązany z Twoim kontem Google Cloud i naciśnij Enter. Następnie wpisz hasło i kliknij przycisk Dalej.
Zobaczysz prośbę, że pakiet SDK Google Cloud chce uzyskać dostęp do Twojego konta Google. Kliknij przycisk Zezwól.
Zobaczysz kod weryfikacyjny. Zaznacz go myszką, a potem kliknij prawym przyciskiem myszy i wybierz Kopiuj. Wróć do okna terminala, sprawdź, czy kursor znajduje się po prawej stronie pola „Wpisz kod weryfikacyjny:”, kliknij prawym przyciskiem myszy i wybierz Wklej. Naciśnij Enter.
Jeśli pojawi się prośba o wybranie projektu w chmurze, którego chcesz użyć, wpisz liczbę odpowiadającą nazwie projektu, która została przez Ciebie użyta w tym ćwiczeniu w programowaniu, a następnie naciśnij Enter.
Jeśli pojawi się prośba o włączenie interfejsu compute API, naciśnij klawisz Enter, aby go włączyć. Następnie zostanie wyświetlony komunikat z prośbą o skonfigurowanie ustawień Google Compute Engine. Naciśnij klawisz Enter. Wyświetli się lista możliwych regionów lub stref – wybierz ten, który znajduje się najbliżej Ciebie, wpisz odpowiedni numer i naciśnij klawisz Enter.
Za chwilę pojawią się dodatkowe informacje. Pakiet Google Cloud SDK jest teraz skonfigurowany. Możesz zamknąć okno przeglądarki, ponieważ nie będzie już potrzebny.
Instalowanie oprogramowania czujnika i skryptu pogodowego
Na linii poleceń na Raspberry Pi sklonuj potrzebne pakiety do odczytu informacji z pinów wejścia/wyjścia.
git clone https://github.com/adafruit/Adafruit_Python_GPIO
Instalowanie pobranych pakietów
cd Adafruit_Python_GPIO
sudo python setup.py install
cd ..
Skopiuj kod projektu, który włącza czujnik pogody
git clone https://github.com/googlecodelabs/iot-data-pipeline
Skopiuj sterownik czujnika do tego samego katalogu, w którym znajduje się pozostała część pobranego oprogramowania.
cd iot-data-pipeline/third_party/Adafruit_BME280
mv Adafruit_BME280.py ../..
cd ../..
Edytuj skrypt, wpisując...
nano checkWeather.py
Zmień projekt na identyfikator projektu, a temat na nazwę tematu Pub/Sub (te informacje zostały podane w sekcji Konfiguracja i Tworzenie tematu Pub/Sub w tym laboratorium kodu).
Zmień wartości sensorID, sensorZipCode, sensorLat i sensorLong na dowolną wartość. Wartości szerokości i długości geograficznej dla konkretnej lokalizacji lub adresu znajdziesz tutaj.
Po wprowadzeniu niezbędnych zmian naciśnij Ctrl+X, aby zamknąć edytor nano. Naciśnij Y, aby potwierdzić.
# constants - change to fit your project and location
SEND_INTERVAL = 10 #seconds
sensor = BME280(t_mode=BME280_OSAMPLE_8, p_mode=BME280_OSAMPLE_8, h_mode=BME280_OSAMPLE_8)
credentials = GoogleCredentials.get_application_default()
project="myProject" #change this to your Google Cloud project id
topic = "myTopic" #change this to your Google Cloud PubSub topic name
sensorID = "s-Googleplex"
sensorZipCode = "94043"
sensorLat = "37.421655"
sensorLong = "-122.085637"
Instalowanie klucza bezpieczeństwa
Skopiuj klucz bezpieczeństwa (z sekcji „Bezpieczne publikowanie w temacie”) do Raspberry Pi.
Jeśli skopiowałeś klucz bezpieczeństwa z lokalnego komputera na Raspberry Pi (do katalogu /home/pi) za pomocą SFTP lub SCP, możesz pominąć następny krok i przejść do eksportowania ścieżki.
Jeśli klucz bezpieczeństwa został umieszczony w zasobniku na dane, musisz zapamiętać nazwę zasobnika na dane i nazwę pliku. Aby skopiować klucz bezpieczeństwa, użyj polecenia gsutil. To polecenie może uzyskać dostęp do Google Storage (stąd nazwa gsutil i ścieżka do pliku zaczynająca się od gs://). Pamiętaj, aby w poniższym poleceniu podać nazwę Twojego zasobnika i nazwy pliku.
gsutil cp gs://nameOfYourBucket/yourSecurityKeyFilename.json .
Powinien pojawić się komunikat o kopiowaniu pliku, a potem o zakończeniu operacji.
Z wiersza poleceń w Raspberry Pi wyeksportuj ścieżkę do klucza bezpieczeństwa (zmień nazwę pliku, aby była zgodna z tym, co masz).
export GOOGLE_APPLICATION_CREDENTIALS=/home/pi/iot-data-pipeline/yourSecurityKeyFilename.json
Masz teraz gotowy czujnik pogodowy IoT, który jest gotowy do przesyłania danych do Google Cloud.
7. Uruchamianie potoku danych
Konieczne może być włączenie interfejsu Compute API
Strumieniowanie danych z Raspberry Pi
Jeśli masz czujnik pogody IoT Raspberry Pi, uruchom skrypt, który odczyta dane pogodowe i prześle je do Google Cloud Pub/Sub. Jeśli nie jesteś w katalogu /home/pi/iot-data-pipeline, przejdź najpierw do tego katalogu
cd /home/pi/iot-data-pipeline
Uruchamianie skryptu pogody
python checkWeather.py
W oknie terminala co minutę powinny pojawiać się wyniki dotyczące danych pogodowych. Jeśli dane są przesyłane, możesz przejść do następnej sekcji (Sprawdzanie, czy dane są przesyłane).
Symulowany strumień danych
Jeśli czujnik pogody IoT nie został utworzony przez Ciebie, możesz zasymulować strumieniowanie danych, korzystając z publicznego zbioru danych zapisanego w Google Cloud Storage i przesyłając go do istniejącego tematu Pub/Sub. Użyjesz usługi Google Dataflow oraz udostępnionego przez Google szablonu do odczytywania danych z Cloud Storage i publikowania ich w Pub/Sub.
W ramach tego procesu Dataflow będzie potrzebować tymczasowego miejsca na dane, więc utwórzmy zasobnik na potrzeby tego celu.
W konsoli Cloud wybierz Storage, a następnie Browser.
Kliknij przycisk Utwórz zasobnik.
Wybierz nazwę zasobnika (pamiętaj, że musi być ona globalnie niepowtarzalna w całej usłudze Google Cloud) i kliknij przycisk Utwórz. Zapamiętaj nazwę tego zasobnika na dane, ponieważ będzie Ci ona potrzebna za chwilę.
W konsoli Cloud wybierz Dataflow.
Kliknij Utwórz zadanie z szablonu (w górnej części ekranu).
Podaj szczegóły stanowiska, jak pokazano poniżej. Zwróć uwagę na te kwestie:
- Wpisz nazwę zadania dataflow-gcs-to-pubsub
- Region powinien być wybierany automatycznie na podstawie miejsca hostowania projektu i nie powinien wymagać zmiany.
- Wybierz szablon Cloud Dataflow GCS Text to Cloud Pub/Sub (Tekst GCS do Cloud Pub/Sub)
- W polu „Pliki wejściowe w Cloud Storage” wpisz gs://codelab-iot-data-pipeline-sampleweatherdata/*.json (to publiczny zbiór danych).
- Dokładna ścieżka w wyjściowym temacie Pub/Sub będzie zależała od nazwy projektu i będzie wyglądać mniej więcej tak: „projekty/nazwaProjektu/tematy/danepogodowe”.
- Ustaw lokalizację tymczasową na nazwę utworzonego właśnie zasobnika Cloud Storage oraz prefiks nazwy pliku „tmp”. Powinien on wyglądać tak: „gs://myStorageBucketName/tmp”.
Po wpisaniu wszystkich informacji (patrz poniżej) kliknij przycisk Uruchom zadanie
Zadanie Dataflow powinno się uruchomić.
Ukończenie zadania Dataflow powinno zająć około minuty.
8. Sprawdzanie, czy dane są przesyłane
Logi funkcji w Cloud Functions
Sprawdź, czy funkcja w Cloud Functions jest aktywowana przez Pub/Sub
gcloud beta functions logs read function-weatherPubSubToBQ
Logi powinny wskazywać, że funkcja jest wykonywana, odbiera dane i że są wstawiane do BigQuery
Dane BigQuery
Sprawdź, czy dane są przesyłane do tabeli BigQuery. W konsoli Cloud otwórz BigQuery (bigquery.cloud.google.com).
Pod nazwą projektu (po lewej stronie okna) kliknij Zbiór danych (weatherData), a potem tabelę (weatherDataTable) i kliknij przycisk Tabela zapytań.
Dodaj gwiazdkę do instrukcji SQL, aby wyglądała ona jak SELECT * FROM…, jak pokazano poniżej, a potem kliknij przycisk Uruchom zapytanie.
Jeśli pojawi się taka prośba, kliknij przycisk Uruchom zapytanie.
Jeśli pojawią się wyniki, oznacza to, że przepływ danych jest prawidłowy.
W przypadku przepływu danych możesz teraz utworzyć panel analityczny.
9. Tworzenie panelu Studia danych
Studio danych Google pozwala Ci tworzyć przyjazne raporty i panele informacyjne na podstawie Twoich danych – do tego możesz je dopasować do swoich potrzeb i łatwo udostępniać.
W przeglądarce otwórz stronę https://datastudio.google.com
W sekcji „Tworzenie nowego raportu” kliknij Pusty, a następnie przycisk Rozpocznij
Zaznacz pole wyboru, aby zaakceptować warunki, kliknij przycisk Dalej, wybierz e-maile, które chcesz otrzymywać, i kliknij Gotowe. Ponownie w sekcji „Utwórz nowy raport” kliknij Pusty.
Kliknij przycisk Utwórz nowe źródło danych.
Kliknij BigQuery, a potem przycisk Autoryzuj i wybierz konto Google, którego chcesz używać w Studiu danych (powinno to być to samo konto, którego używasz w ramach laboratorium kodu).
Kliknij przycisk Zezwól.
Wybierz nazwę projektu, zbiór danych i tabelę. Następnie kliknij przycisk Connect (Połącz).
Zmień pola typu zgodnie z podanym niżej wzorcem (wszystko powinno być liczbą z wyjątkiem pól timecollected i sensorID). Pamiętaj, że parametr timecollected ma wartość Date Hour (a nie tylko Date). Zmień wartości w polach Agregacja zgodnie z poniższym opisem (punkt rosy, temperatura, wilgotność i ciśnienie powinny być wartościami średnimi, a w pozostałych przypadkach mieć wartość „Brak”). Kliknij przycisk Utwórz raport.
Potwierdź, klikając przycisk Dodaj do raportu.
Jeśli pojawi się prośba o wybranie konta Google, zrób to, a potem kliknij przycisk Zezwól, aby umożliwić Studiu danych przechowywanie raportów na Dysku Google.
Pojawi się puste pole, w którym możesz utworzyć panel. Z górnego rzędu ikon wybierz Seria czasowa.
W lewym górnym rogu pustego arkusza narysuj prostokąt. Powinien zajmować około 1⁄4 pustej arkusza.
Po prawej stronie okna kliknij kartę Styl. Zmień ustawienie „Brak danych” z „Linie do zera” na „Znaki końca wiersza”. W sekcji Lewa oś Y usuń 0 z pola Oś minimalna, aby zmienić je na (Auto).
Kliknij wykres w arkuszu i skopiuj go i wklej (Ctrl+C/Ctrl+V) trzy razy. Dopasuj wykresy tak, aby każdy z nich miał 1⁄4 jego układu.
Kliknij każdy wykres, a następnie w sekcji Właściwości i dane ciągu czasowego kliknij istniejący wskaźnik (punkt rosy), wybierz inne dane, które będą wyświetlane, dopóki wszystkie cztery odczyty pogody (punkt rosy, temperatura, wilgotność i ciśnienie) nie będą miały własnego wykresu.
Masz teraz podstawowy pulpit nawigacyjny.
10. Gratulacje!
Udało Ci się utworzyć cały potok danych. W ramach tego ćwiczenia poznasz sposób korzystania z Google Pub/Sub, wdrażania funkcji bez serwera, korzystania z BigQuery oraz tworzenia panelu analitycznego w Studiu danych. Wiesz też, jak bezpiecznie przesyłać dane do Google Cloud Platform przy użyciu pakietu Google Cloud SDK. W końcu zdobywasz praktyczne doświadczenie w zakresie ważnego wzorca architektury, które pozwala obsłużyć duże ilości danych przy zachowaniu dostępności.
Porządkowanie roszczeń
Gdy zakończysz eksperymentowanie z danymi pogodowymi i potokiem analitycznym, możesz usunąć uruchomione zasoby.
Jeśli masz czujnik IoT, wyłącz go. Naciśnij Ctrl+C w oknie terminala, aby zatrzymać skrypt, a następnie wpisz następujące polecenie, aby wyłączyć Raspberry Pi
shutdown -h now
Otwórz Cloud Functions, kliknij pole wyboru obok funkcji function-weatherPubSubToBQ, a potem kliknij Usuń.
Otwórz Pub/Sub, kliknij Temat, kliknij pole wyboru obok tematu weatherdata, a następnie kliknij Usuń.
Przejdź do sekcji Pamięć, kliknij pola wyboru obok zasobników pamięci, a następnie kliknij Usuń.
Otwórz stronę bigquery.cloud.google.com, kliknij strzałkę w dół obok nazwy projektu, kliknij strzałkę w dół po prawej stronie zbioru danych weatherData, a potem kliknij Usuń zbiór danych.
Gdy pojawi się odpowiedni komunikat, wpisz identyfikator zbioru danych (weatherData), aby zakończyć usuwanie danych.