-
Notifications
You must be signed in to change notification settings - Fork 0
Home
Wie können wir in möglichst kurzer Zeit (möglichst in Echtzeit) Ad-hoc-Analysen und -Transformationen auf grosse Mengen von (Meta-)Daten machen und den Workflow bei Bedarf mit möglichst wenig technischem Hintergrundwissen umstellen?
Key words:
- Distributed Low-Latency Data Analysis
- Interactive Data-Processing Queries
Description:
- Wir möchten interaktive data-processing queries erstellen / möchten die Möglichkeit anbieten, interaktiv data-processing patterns zu erforschen
- Dazu nutzen wir Zeppelin (Jupyter?)
- ist interaktiv, zum kleinschrittigen Ausprobieren
- visualisiert die Query-Ergebnisse
- Basis der queries ist die "data-processing infrastructure" von swissbib. Diese basiert auf streaming Technologien (Flink, Spark)
- MARC21 XML Format
- stored in Mongo DB? (Rohdatenexport, Formate)
- CBS?
- SRU-Schnittstelle
- http://www.ub.unibas.ch/ub-hauptbibliothek/dienstleistungen/publizieren/edoc/
- open access publications
- 50'000 entries (?)
- elastic search index
A similar case? edocs by BBAW (Berlin-Brandenburgische Akademie der Wissenschaften):
- http://www.bbaw.de/telota/projekte/edoc-server
- http://www.bbaw.de//telota/projekte/edoc-hilfe.pdf
- http://www.openarchives.org/pmh/
- https://www.crossref.org/
- provides about 90 Mio data sets
- For our project, we are interested in the DOIs
As a library, I want to know which of my holdings are nowhere else to be found. For example, for prioritizing which of our holdings should be digitized most urgently.
13.07., Silvia
As a librarian, I want to know what is special about the holdings of some library/institution. E.g., ... (?)
(any more details about this use case?)
13.07., Dominique
I want to add missing data to a set of open access publication data. E.g., I want to add the correct DOIs, I want to identify persons and match information from DBpedia, VIAF.
As a researcher/artist/editor/..., I want to know whether a text has copyright restrictions or not.
??
Turntable that channels data from different producers to different consumers. E.g., Swissbib data is one producer.
Big data framework. Streaming technology. Links several data sets. Transforms data. Aggregates data (how many records with property xy?) Typical use case: Complex Event Processing (CEP), e.g. recognizing atypical event patterns in a huge VPN infrastructure.
- https://stackoverflow.com/questions/28082581/what-is-the-difference-between-apache-spark-and-apache-flink
- Wikipedia: Apache Spark
Interactive life note pad with which the end user queries data, then visualizes the result, then adapts the query, and so on...
Setting up Zeppelin:
- For running a Flink cluster as backend Zeppelin must be compiled against the same version of Flink. E.g. the Flink cluster has version ''1.3.1'', Zeppelin has to be compiled with ''mvn clean package -Dflink.version=1.3.1 ''.
Some links:
- https://zeppelin.apache.org/docs/0.7.2/interpreter/flink.html
- https://zeppelin.apache.org/docs/0.7.2/quickstart/install_with_flink_and_spark_cluster.html
- https://schd.ws/hosted_files/apachecon2016/7a/Tutorial-Setting%20Up%20a%20Notebook%20Based%20Data%20Science%20Environment%20with%20Flink%20and%20Spark%20Under%20the%20Hood.pdf
Transforms metadata, especially for clean-up, normalization.
Three main parts:
- Framework: foundation of the data processing pipelines (pipes and filters framework, implemented in Java)
- Morph (Metamorph) "is a data flow-oriented language for transforming semi-structured data. Its declarative style facilitates communication between programmers and domain experts. It is both format-agnostic and extendable." (Böhme et.al. 2015)
- Flux: scripting language to easily build and run processing pipelines. No Java programming is necessary, just a command line.
What is special about Metamorph?
- Declarative approach, but no parallel processing, not for huge datasets.
- "Metamorph uses the flow paradigm to enable declarative definition of transformations. It does not use the flow paradigm to enable parallelism. [...] The parallelism aspect of flow languages is not shared by Metamorph. Furthermore, Metamorph operates on rather small, self-contained data records (see also Section 3.2). For these reasons, there is no necessity to execute elements of the flow in parallel as parallelism may easily be achieved by splitting the input data along record boundaries and running several Metamorph instances in parallel." (Böhme et.al. 2015)
- Is this the reason why we want to use Kafka and Spark/Flink in addition to Metamorph? To facilitate parallel processing, working with huge data sets, and with data sets from different sources?
More info:
- Um Metafacture lokal benutzen zu können, benötigst du den metafacture-runner (https://github.com/culturegraph/metafacture-runner). Lade am besten den letzten Release herunter und entpacke das Programm, anstatt den Quellcode herunterzuladen.
- Um die linked-swissbib-Erweiterungen nutzen zu können, musst du zudem das Repository swissbib-metafacture-commands (https://github.com/linked-swissbib/swissbib-metafacture-commands) klonen. Die aktuellsten Erweiterungen sind im Branch MF-4.0 zu finden. Eine Anleitung, wie du kompilieren und das Artefakt in den metafacture-runner integrieren musst, findest du hier: https://github.com/sschuepbach/metafacture-examples/tree/master/Swissbib-Extensions.
- Interessant könnte auch das Repository metafacture-examples (https://github.com/sschuepbach/metafacture-examples) sein, wo es u.a. auch ein paar Beispiele für Metafacture-Workflows mit den Swissbib-Extensions zu finden sind.
- Schliesslich sind Sebastians Arbeiten an der Applikation, welche Daten über die SRU-Schnittstelle von Swissbib ausliest und in einen Kafka-Cluster leitet, bei dataramblers veröffentlicht: https://github.com/dataramblers/swissbib-query
Leider ist die Dokumentation von Metafacture nicht gerade besonders umfangreich. Daher hier lediglich ein paar vereinzelte Hinweise zur Benutzung (aus AnwenderInnensicht):
- Christoph Böhme, einer der Hauptentwickler von Metafacture, hat an der SWIB13 einen Vortrag zu den Grundlagen von Metafacture gehalten. Die Folien findest du hier: http://swib.org/swib13/slides/boehme_swib13_131.pdf.
- Etwas technischer, aber ziemlich konzis ist ein Artikel, den er zusammen mit Markus Geipel und Jan Hannemann geschrieben hat: http://dlib.org/dlib/may15/boehme/05boehme.html
- Schau dir die Beispiele in metafacture-runner und metafacture-examples an. Zentral sind jeweils die Flux-Datei, welche den Workflow definiert, und - falls vorhanden - die Morph-Datei, die die Transformationen beschreibt.
- Im github-Wiki von metafacture-core ist ebenfalls
ein bisschen Dokumentation da. Interessant für den Einstieg:
- Home
- Flux User Guide
- Metamorph User Guide
- Metamorph Functions (für einen Überblick über die vorhandenen Funktionen schau dir auch das XML-Schema an: metamorph.xsd)
- Metamorph Collectors
- Ein vollständige Übersicht über die vorhanden Flux commands bietet dir die
flux-commands.properties-Datei.
- Für die Beschreibung der einzelnen Commands musst du dir leider das Javadoc der betreffenden Klassen anschauen. Im Anhang findest du zudem eine Liste, welche ich vor zwei Jahren erstellt habe. Sie ist sicher nicht mehr ganz aktuell, sollte dir aber schon einige Arbeit ersparen.
- Die neuen Flux commands, welche die Swissbib-Extensions mitbringen, sind im README.md des Repositories beschrieben.
- Java API von Metafacture, über die wir von Zeppelin aus auf die Daten zugreifen wollen. Metafacture-Java-Beispiel mit dieser API: https://github.com/hbz/metafacture-java-examples
Kibana visualizes Elastic Search.
- [https://www.elastic.co/]
- Analyzers dienen dazu, Text in einzelne Fragmente (Tokens) aufzuteilen, diese möglicherweise noch weiter zu bearbeiten (Filter) und schliesslich dem sog. invertierten Index hinzuzufügen. Invertiert deshalb, weil nicht ein Index der Tokens pro Dokument erzeugt wird, sondern umgekehrt ein Index der Dokumente pro Token.
- Analyzers werden demzufolge nur auf den Datentyp text angewendet (daneben gibt es in ES noch eine Reihe weiterer Datentypen)
- Ein Analyzer besteht aus einer Kombination verschiedenen Typen von
Filtern und Tokenizers:
- 0-n Character Filters, welche einzelne Zeichen im Text löschen oder ersetzen oder auch neue Zeichen hinzufügen
- Ein Tokenizer, welcher den Text in einzelne Fragmente (Tokens) aufteilt, beispielsweise immer entlang von Leerzeichen
- 0-n Token Filters, welche die einzelnen Tokens weiter bearbeiten (bspw. alle Gross- in Kleinbuchstaben umwandelt)
- Es gibt in Elasticsearch eine Reihe von Analyzers, die bereits eine fertig konfigurierte Kombination aus den erwähnten Filtern/Tokenizers anbieten. Daneben gibt es aber auch die Möglichkeit, sich einen eigenen Analyzer zu bauen.
Ressourcen:
- Analyzers generell: https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-analyzers.html
- Character Filters: https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-charfilters.html
- Tokenizers: https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-tokenizers.html
- Token Filters: https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-tokenfilters.html
Interessant ist natürlich auch, wie die Analyzers in das Mapping eingebunden werden können: https://www.elastic.co/guide/en/elasticsearch/reference/current/analyzer.html
Für eine kurze Vorbereitung macht es keinen Sinn, wenn man sich jeden einzelnen Filter / Tokenizer im Detail anschaut, sondern sich einen generellen Überblick über die Möglichkeiten zur Filterung und Tokenisierung verschafft.
- Library/bibliography specialist (MARC 21, GND, RVK, CBS clustering...)
- Subject matter expert for any other data used (e.g., legal stuff)
- Specialists for the tools used
- Erklärbär (explaining what we are doing to flaneurs during the hackathon)
- Poster artist (can last year's poster be topped at all?)
- Documentation enthusiast (web presentation on hackathon web site)
- Interdisciplinary scrutinizer?
- If we want to analyze profiles, patterns or anything the like - do we need some statistics expert?
-
- July:
- Deciding about tools
- Deciding about use case
- Deciding about publication platform (e.g. these notes)
- Further enhancements on these notes
- Getting tool setup running locally (using Docker?)
- Setting up central tools and data host
- Testing PC setups
- Everybody: Getting familiar with Zeppelin usage details