Przejdź do treści

Metody użycia Cray Graph Engine

Metoda 1: cge-cli

Tutaj wykorzystujemy konsolowy program cge-cli z poziomu Jupytera. Nic jednak nie stoi na przeszkodzie, aby wywołać ten program bezpośrednio z konsoli bądź użyć wywołania basha wykorzystującego cge-cli we własnym programie.

cge-cli jest częścią składową Cray Graph Engine, nie jest to jakiś zewnętrzny program firmy niezwiązanej z Cray.

cge-cli wymaga zapytania podanego w pliku, i wynik jego wykonania również zapisuje w pliku. Parametrami programu można sterować, tak, aby uzyskać żądany format docelowego pliku wynikowego.

Przykład użycia cge-cli w Jupyterze:

In [1]:
%%bash
cge-cli query --db-port=37501 ../cge/query.rq
0	10	1681	0	file:///lustre/tetyda/home/kdmszk40/cge/output/queryResults.2020-10-14T20.33.13Z003.6917.tsv		
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.apache.hadoop.security.authentication.util.KerberosUtil (file:/opt/cray/cge/3.2.1465_rf66789e_fe3.3.0_2020011716/bin/cge-fe.jar) to method sun.security.krb5.Config.getInstance()
WARNING: Please consider reporting this to the maintainers of org.apache.hadoop.security.authentication.util.KerberosUtil
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
0 [main] WARN com.cray.cge.cli.CgeCli  - User data hiding is enabled by default, logs will obscure/omit user data.  Set cge.server.RevealUserDataInLogs=1 in the in-scope cge.properties file to disable this behaviour.
6 [main] INFO com.cray.cge.cli.commands.queries.QueryCommand  - Received 1 queries to execute
12 [main] INFO com.cray.cge.cli.commands.queries.QueryCommand  - Running Query 1 of 1
671 [main] INFO com.cray.cge.cli.commands.queries.QueryCommand  - Query 1 of 1 succeeded

Metoda 2: CGE GUI

CGE GUI jest to serwer, który łączy się z bazą danych CGE. Można z nim połączyć się za pomocą przeglądarki internetowej, wchodząc na stronę internetową odpowiadającą komputerowi, na którym CGE GUI jest uruchomiony i wskazując odpowiedni port, bądź też (tak jak na tych warsztatach) wskazując adres i port zgodny z ustawionym schematem tunelowania.

Następnie w wyświetlonej prostej stronie internetowej można wpisać odpowiednie zapytanie, a także wybrać format odpowiedzi. Istnieją dwie oddzielne sekcje dla zapytań QUERY oraz UPDATE - pierwsza dotyczy zapytań, które nie modyfikują grafu, a druga dotyczy zapytań, które mogą to zrobić (choć nie muszą).

Strona internetowa do obsługi CGE GUI jest dosyć prymitywna - np. nie działa zapamiętywanie wprowadzonych zapytań, nie ma też możliwości wyświetlenia wyników zapytania w tabelce - potrzeba do tego użyć jakiegoś dodatkowego, zewnętrznego narzędzia.

Metoda 3: Użycie CGE GUI jako endpointa SPARQL

CGE GUI pełni podwójną funkcję - poza wyświetlaniem strony internetowej jest także tzw. endpointem SPARQL. Oznacza to, że zamiast korzystać z wyświetlanej przez CGE GUI strony internetowej, można użyć programu bądź biblioteki potrafiącej komunikować się z endpointem SPARQL. Będzie to jakaś biblioteka firmy zewnętrznej - istnieje takich dość dużo, ponieważ endpoint SPARQL nie jest czymś specyficznym dla Cray Graph Engine, a uniwersalnym, standardowym sposobem komunikacji z wieloma bazami RDF.

Przykład komunikacji z endpointem SPARQL wystawionym przez CGE GUI z użyciem zewnętrznej biblioteki w języku Python

In [2]:
import sparql
In [3]:
q = """
select * where {
    ?s ?p ?o
}
limit 10
"""
In [4]:
res = sparql.query('http://localhost:37561/dataset/query', q)

for row in res:
    unpacked = sparql.unpack_row(row)
    for value in unpacked:
        print(value)
    print()
http://semanticbible.org/ns/2006/NTNames#member
http://www.w3.org/2000/01/rdf-schema#domain
http://semanticbible.org/ns/2006/NTNames#Group

http://semanticbible.org/ns/2006/NTNames#latitude
http://www.w3.org/2000/01/rdf-schema#domain
http://semanticbible.org/ns/2006/NTNames#GeographicLocation

http://semanticbible.org/ns/2006/NTNames#name_en
http://www.w3.org/2000/01/rdf-schema#domain
b0

http://semanticbible.org/ns/2006/NTNames#politicalBelief
http://www.w3.org/2000/01/rdf-schema#domain
b1

http://semanticbible.org/ns/2006/NTNames#subregionOf
http://www.w3.org/2000/01/rdf-schema#domain
http://semanticbible.org/ns/2006/NTNames#GeographicArea

http://semanticbible.org/ns/2006/NTNames#relativeOf
http://www.w3.org/2000/01/rdf-schema#domain
http://semanticbible.org/ns/2006/NTNames#Human

http://semanticbible.org/ns/2006/NTNames#ethnicity
http://www.w3.org/2000/01/rdf-schema#domain
http://semanticbible.org/ns/2006/NTNames#Human

http://semanticbible.org/ns/2006/NTNames#hasAntagonist
http://www.w3.org/2000/01/rdf-schema#domain
http://semanticbible.org/ns/2006/NTNames#Human

http://semanticbible.org/ns/2006/NTNames#possiblySamePersonAs
http://www.w3.org/2000/01/rdf-schema#domain
http://semanticbible.org/ns/2006/NTNames#Human

http://semanticbible.org/ns/2006/NTNames#knows
http://www.w3.org/2000/01/rdf-schema#domain
http://semanticbible.org/ns/2006/NTNames#Human

Metoda 4: Użycie CGE API

CGE oferuje także API do Javy, Pythona oraz Sparka. Jeśli wierzyć dokumentacji, API Pythona nie jest na ten moment wspierane w pakiecie Urika-XC (a więc na Okeanosie również nie). API Javy oraz Pythona powinno działać - jednakże osobiście nie wypróbowałem jego działania.

Ta strona używa plików cookies.
Polityka Prywatności    AKCEPTUJĘ