Heim  >  Artikel  >  Java  >  Wie man mit Java eine Echtzeit-Analyse- und Abfrageanwendung basierend auf Apache Druid entwickelt

Wie man mit Java eine Echtzeit-Analyse- und Abfrageanwendung basierend auf Apache Druid entwickelt

WBOY
WBOYOriginal
2023-09-22 08:51:13696Durchsuche

如何使用Java开发一个基于Apache Druid的实时分析和查询应用

So verwenden Sie Java, um eine Echtzeitanalyse- und Abfrageanwendung basierend auf Apache Druid zu entwickeln

Einführung:
Apache Druid ist eine Open-Source-Echtzeit-Datenverarbeitungs- und Abfrage-Engine, die sich durch hohe Leistung auszeichnet. Skalierbarkeit und Zuverlässigkeit. Geeignet für die Erstellung von Echtzeitanalyse- und Abfrageanwendungen. In diesem Artikel wird erläutert, wie Sie mithilfe der Java-Sprache eine Echtzeitanalyse- und Abfrageanwendung auf Basis von Apache Druid entwickeln und spezifische Codebeispiele bereitstellen.

1. Richten Sie die Apache Druid-Umgebung ein
Zunächst müssen wir die Apache Druid-Umgebung einrichten. Die spezifischen Schritte sind wie folgt:

  1. Laden Sie das Apache Druid-Installationspaket herunter und entpacken Sie es.
  2. Konfigurieren Sie die Umgebungsvariablen von Druid, einschließlich JAVA_HOME und DRUID_HOME.
  3. Starten Sie den Zookeeper-Dienst.
  4. Starten Sie den Druid-Dienst, einschließlich Broker-, Koordinator-, Overlord- und historischer Knoten.

2. Erstellen Sie eine Druid-Datenquelle
Als nächstes müssen wir eine Druid-Datenquelle erstellen und die Daten in Druid importieren. Die spezifischen Schritte lauten wie folgt:

  1. Erstellen Sie eine Datenquelle, die die erforderlichen Felder enthält, z. B. Zeitstempel-, Dimensions- und Kennzahlenfelder.
  2. Verwenden Sie Java-Code, um eine Verbindung zum Koordinatorknoten von Druid herzustellen und eine Datenquelle zu erstellen.
  3. Verwenden Sie Java-Code, um Daten in die Datenquelle von Druid zu importieren. Die spezifischen Codebeispiele lauten wie folgt:
DruidDataSource dataSource = new DruidDataSource();
dataSource.setUrl("jdbc:mysql://localhost:3306/mydb");
dataSource.setUsername("root");
dataSource.setPassword("password");

String jsonPath = "path/to/data.json";
String dataSourceName = "myDataSource";

File jsonFile = new File(jsonPath);
InputStream inputStream = new FileInputStream(jsonFile);
InputStreamReader reader = new InputStreamReader(inputStream);

String data = IOUtils.toString(reader);
String jsonPayload = String.format(data, dataSourceName);

HttpURLConnection connection = (HttpURLConnection) new URL("http://localhost:8081/druid/coordinator/v1/metadata/datasources").openConnection();
connection.setRequestMethod("POST");
connection.setDoOutput(true);

OutputStream outputStream = connection.getOutputStream();
outputStream.write(jsonPayload.getBytes());
outputStream.close();

int responseCode = connection.getResponseCode();
if (responseCode == 200) {
    System.out.println("Data source created successfully.");
}

3. Schreiben Sie den Druid-Abfragecode
Sobald die Datenquelle erfolgreich erstellt und die Daten importiert wurden, können wir den Druid-Abfragecode schreiben. Die spezifischen Schritte sind wie folgt:

  1. Verwenden Sie Java-Code, um eine Verbindung zum Druid-Broker-Knoten herzustellen.
  2. Erstellen Sie eine Druid-Abfrageanforderung und senden Sie sie an den Druid-Cluster. Die spezifischen Codebeispiele lauten wie folgt:
DruidQueryRequest queryRequest = new DruidQueryRequest();
queryRequest.setDataSource("myDataSource");
queryRequest.setGranularity("hour");
queryRequest.setIntervals("2022-01-01T00:00:00Z/2022-01-02T00:00:00Z");

DruidAggregation aggregation = new DruidAggregation();
aggregation.setType("longSum");
aggregation.setName("totalClicks");
aggregation.setFieldName("clicks");

queryRequest.setAggregations(Collections.singletonList(aggregation));

URL url = new URL("http://localhost:8082/druid/v2");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("POST");
connection.setDoOutput(true);

Gson gson = new Gson();
String jsonPayload = gson.toJson(queryRequest);

OutputStream outputStream = connection.getOutputStream();
outputStream.write(jsonPayload.getBytes());
outputStream.close();

int responseCode = connection.getResponseCode();
if (responseCode == 200) {
    InputStream inputStream = connection.getInputStream();
    InputStreamReader reader = new InputStreamReader(inputStream);
    String result = IOUtils.toString(reader);
    System.out.println(result);
}

4. Abfrageergebnisse anzeigen
Schließlich müssen wir die Abfrageergebnisse anzeigen oder verarbeiten. Spezifische Codebeispiele lauten wie folgt:

JsonParser parser = new JsonParser();
JsonObject jsonObject = parser.parse(result).getAsJsonObject();
JsonArray events = jsonObject.getAsJsonArray("events");

for (JsonElement event : events) {
    JsonObject eventObject = event.getAsJsonObject();
    String timestamp = eventObject.get("__time").getAsString();
    long clicks = eventObject.get("totalClicks").getAsLong();

    System.out.println("Timestamp: " + timestamp);
    System.out.println("Total Clicks: " + clicks);
}

Fazit:
In diesem Artikel wird beschrieben, wie Sie mithilfe der Java-Sprache eine Echtzeitanalyse- und Abfrageanwendung basierend auf Apache Druid entwickeln, einschließlich der Einrichtung einer Druid-Umgebung, der Erstellung einer Druid-Datenquelle und des Schreibens Druid-Abfragecode und Anzeige der Abfrageergebnisse. Durch diese Schritte können wir ganz einfach eine leistungsstarke Echtzeitanalyse- und Abfrageanwendung erstellen, die uns bei der schnellen Datenanalyse und Entscheidungsfindung unterstützt.

Referenzen:

  1. Offizielle Dokumentation zu Apache Druid: https://druid.apache.org/
  2. Druid-Beispielcode auf GitHub: https://github.com/apache/druid/tree/master/examples/ quickstart

Das obige ist der detaillierte Inhalt vonWie man mit Java eine Echtzeit-Analyse- und Abfrageanwendung basierend auf Apache Druid entwickelt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn