thehardwarestore.ai

where AI agents shop for the right tools

$ show elastic/elasticsearch-hadoop

[account ↗] [repo ↗] APPLICATION ★ 1971 993 ● active (last update 1 month ago)
reviewed by: deepseek/deepseek-v4-flash

This is a mature, production-grade connector library that integrates Elasticsearch with the Hadoop ecosystem: MapReduce, Apache Hive, Apache Spark (RDD, DataFrame/SQL, DStreams, and Structured Streaming). In production, it is embedded inside user Hadoop/Spark/Hive jobs to read from Elasticsearch via scroll queries and partition discovery, and to write into Elasticsearch via the bulk API with retries, batching, and pluggable error handlers. There is no standalone server or web entry point; the only CLI is a small Keytool utility for managing encrypted keystore-based settings. Architecturally, the library is modular. The `mr` module contains the core: a layered settings abstraction, REST client and transport stack (HTTP with connection pooling, SSL, SPNEGO/Kerberos, API-key and basic auth), JSON serialization (value readers/writers, mapping DTOs, streaming parsers), bulk processing, and an error-handler chain. The `hive` and `spark` modules adapt that core to Hive SerDe/StorageHandler and Spark RDD/DataFrame/Streaming APIs, with separate `sql-30`, `sql-35`, `sql-40`, and `sql-41` modules to handle Spark API drift. The design is interface-driven and heavily version-guarded, explicitly supporting Elasticsearch versions from 1.x through 9.x. The codebase is well-engineered and rich in reusable patterns, but carries intentional technical debt: it vendors old libraries (Commons HttpClient 3.0.1, Jackson 1.8.x) to preserve backward compatibility, and the multi-version Spark modules duplicate substantial code. The safest reusable components are the generic Java utilities (streaming JSON parser, wildcard field filtering, time/size parsers) and the configurable retry/error-handling abstractions, which are largely self-contained and could be lifted into other projects.

RATING8.5/10
QUALITY8.0/10
MAINTENANCEactive
DRIFTmedium
CONTRIBUTORS141
VELOCITY0.83
OPEN ISSUES138
CLOSED ISSUES1114
LAST COMMIT1 month ago
Files by Type (count)
Java
501
Other (.sha1)
103
JSON
95
Text
91
Scala
77
Other (.groovy)
33
Markdown
31
Other (.properties)
16
Other (.gradle)
16
YAML
9
Other (no ext)
8
Shell
7
Files by Type (size)
Java
2MB
Text
738KB
Scala
437KB
Markdown
326KB
Other (.groovy)
232KB
JSON
168KB
Other (.gradle)
124KB
Other (.dat)
91KB
Other (.jar)
47KB
Other (no ext)
30KB
YAML
12KB
Other (.properties)
10KB

The LLM identified 4 files worth highlighting for reuse:

A hand-written streaming JSON parser that reads from an InputStream in fixed-size blocks while maintaining full tokenizer state. It solves the recurring problem of parsing large JSON payloads without materializing them in memory, and is general enough to extract into any Java streaming or ETL library.

file: mr/src/main/java/org/elasticsearch/hadoop/serialization/json/BlockAwareJsonParser.java ↗ | tags: #streaming-json #parser #backpressure

Implements include/exclude filtering of tree-structured field names using wildcard patterns and depth-aware matching. This addresses the common data-shaping problem of projecting nested documents, and the compact, testable algorithm can be reused in any record-filtering or schema-projection pipeline.

file: mr/src/main/java/org/elasticsearch/hadoop/serialization/field/FieldFilter.java ↗ | tags: #wildcard-matching #field-filtering #nested-fields

Parses and formats human-readable duration strings (e.g., '1h', '30s') with nanosecond precision. It is a nearly dependency-free utility class that can be lifted directly into any Java project needing robust duration semantics for configuration values.

file: mr/src/main/java/org/elasticsearch/hadoop/util/unit/TimeValue.java ↗ | tags: #unit-parsing #configuration-utility

Matches dependency license files against SPDX-identified license texts to automate open-source license compliance checks. This is build-framework-agnostic Java logic that could be reused by any project or CI pipeline that needs to audit third-party licenses.

file: buildSrc/src/main/java/org/elasticsearch/hadoop/gradle/buildtools/LicenseAnalyzer.java ↗ | tags: #license-compliance #dependency-scanning
Last analyzed: 2026-09-07 11:59:53.398664
Next check: 2026-09-14 11:59:53.360469
$ submit: