ClickHouse / ClickHouse/clickhouse-java

[client-v2]Add NativeFormatWriter support to ClickHous Client v2

Abierto
#2,509 14 comentarios 2 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

client-api-v2 enhancement
Lenguaje dominante
Java
Estrellas
1.6k
Forks
637
Merge medio
2 d 23 h
PR fusionados (30 d)
29

Descripción

Use case

Currently, the ClickHouse Java Client v2 only supports RowBinaryFormatWriter for batch insertions, but does not provide NativeFormatWriter support. The Native format typically offers better performance compared to RowBinary format for high-throughput scenarios. We have a high-throughput application that needs to insert large batches of data into ClickHouse. Our current implementation uses RowBinary format:

ClickHouseFormat format = ClickHouseFormat.RowBinary; // Currently limited options
try (InsertResponse response = clickhouseClient.insert(TABLE_NAME, out -> {
    RowBinaryFormatWriter writer = new RowBinaryFormatWriter(out, tableSchema, format);
    // ... data writing logic
}, format, new InsertSettings())) {
    // ... handle response
}
Describe the solution you'd like

We would like to use Native format for better performance:

ClickHouseFormat format = ClickHouseFormat.Native; // Desired functionality
try (InsertResponse response = clickhouseClient.insert(TABLE_NAME, out -> {
    NativeFormatWriter writer = new NativeFormatWriter(out, tableSchema, format); // Desired API
    // ... data writing logic
}, format, new InsertSettings())) {
    // ... handle response
}

Guía de contribución

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Línea de trabajo

Empieza leyendo RowBinaryFormatWriter y la API de inserción de ClickHouse Client v2 mostrada en la issue para entender el contrato existente del writer y la selección del formato. Añade soporte equivalente para NativeFormatWriter para que las inserciones puedan usar ClickHouseFormat.Native y, después, verifica que la inserción por lotes en formato Native funciona para la API solicitada.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
java
Área
databases
Tipo de issue
Nueva funcionalidad
Dificultad
4/5
Tiempo estimado
3-5 días
Estado de actividad
Estancado
Claridad
Bastante claro
Aptitud para principiantes
40/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.