Rumah > Java > javaTutorial > Cara menggunakan Java untuk membangunkan aplikasi analisis dan pertanyaan masa nyata berdasarkan Apache Druid

Cara menggunakan Java untuk membangunkan aplikasi analisis dan pertanyaan masa nyata berdasarkan Apache Druid

WBOY
Lepaskan: 2023-09-22 08:51:13
asal
740 orang telah melayarinya

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

Cara menggunakan Java untuk membangunkan analisis masa nyata dan aplikasi pertanyaan berdasarkan Apache Druid

Pengenalan:
Apache Druid ialah enjin pemprosesan dan pertanyaan data masa nyata sumber terbuka, yang mempunyai ciri-ciri prestasi tinggi, skalabiliti dan kebolehpercayaan Sesuai untuk membina analisis masa nyata dan aplikasi pertanyaan. Artikel ini akan memperkenalkan cara menggunakan bahasa Java untuk membangunkan analisis masa nyata dan aplikasi pertanyaan berdasarkan Apache Druid, dan menyediakan contoh kod khusus.

1. Sediakan persekitaran Apache Druid
Pertama, kita perlu sediakan persekitaran Apache Druid. Langkah-langkah khusus adalah seperti berikut:

  1. Muat turun dan nyahzip pakej pemasangan Apache Druid.
  2. Konfigurasikan pembolehubah persekitaran Druid, termasuk JAVA_HOME dan DRUID_HOME.
  3. Mulakan perkhidmatan Zookeeper.
  4. Mulakan perkhidmatan Druid, termasuk Broker, Penyelaras, Overlord dan nod Sejarah.

2. Cipta sumber data Druid
Seterusnya, kita perlu mencipta sumber data Druid dan mengimport data ke dalam Druid. Langkah-langkah khusus adalah seperti berikut:

  1. Buat sumber data yang mengandungi medan yang diperlukan, seperti medan cap masa, dimensi dan ukuran.
  2. Gunakan kod Java untuk menyambung ke nod Penyelaras Druid dan buat sumber data.
  3. Gunakan kod Java untuk mengimport data ke dalam sumber data Druid. Contoh kod khusus adalah seperti berikut:
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.");
}
Salin selepas log masuk

3. Tulis kod pertanyaan Druid
Setelah sumber data berjaya dibuat dan data diimport, kita boleh menulis kod pertanyaan Druid. Langkah-langkah khusus adalah seperti berikut:

  1. Gunakan kod Java untuk menyambung ke nod Broker Druid.
  2. Bina permintaan pertanyaan Druid dan hantar ke gugusan Druid. Contoh kod khusus adalah seperti berikut:
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);
}
Salin selepas log masuk

4. Paparkan hasil pertanyaan
Akhir sekali, kita perlu memaparkan atau memproses hasil pertanyaan. Contoh kod khusus adalah seperti berikut:

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);
}
Salin selepas log masuk

Kesimpulan:
Artikel ini memperkenalkan cara menggunakan bahasa Java untuk membangunkan analisis masa nyata dan aplikasi pertanyaan berdasarkan Apache Druid, termasuk menyediakan persekitaran Druid, mencipta sumber data Druid, menulis Kod pertanyaan Druid, dan memaparkan hasil pertanyaan. Melalui langkah ini, kami boleh membina analisis masa nyata dan aplikasi pertanyaan dengan mudah untuk membantu kami melaksanakan analisis data dan membuat keputusan dengan cepat.

Rujukan:

  1. Dokumentasi rasmi Apache Druid: https://druid.apache.org/
  2. Kod sampel Druid di GitHub: https://github.com/apache/druid/tree/master/examples/ quickstart

Atas ialah kandungan terperinci Cara menggunakan Java untuk membangunkan aplikasi analisis dan pertanyaan masa nyata berdasarkan Apache Druid. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan