CASSANDRA-19411: Bulk reader fails to produce a row when regular column values are null

Bulk Reader won't emit a row when the regular column values are all `null`. For example,
a schema `PK` = `a`, `b` ; `CK` = `c`, `d` ; and columns = `e`, `f`.

|  a  |  b  |  c  |  d  |  e   |  f   |
| --- | --- | --- | --- | ---- | ---- |
| pk1 | pk2 | ck1 | ck2 | null | null |

When queried from Analytics bulk reader, it won't produce a row.

This issue also occurs when the projected regular column values are all `null`, where
other non-projected columns might have some values.

Patch by Francisco Guerrero; Reviewed by Yifan Cai for CASSANDRA-19411
13 files changed
tree: b55a84e57174e811d003f3ae7223ec73b6ea7d41
  1. .circleci/
  2. cassandra-analytics-core/
  3. cassandra-analytics-core-example/
  4. cassandra-analytics-integration-framework/
  5. cassandra-analytics-integration-tests/
  6. cassandra-bridge/
  7. cassandra-four-zero/
  8. cassandra-three-zero/
  9. config/
  10. githooks/
  11. gradle/
  12. ide/
  13. profiles/
  14. scripts/
  15. .asf.yaml
  16. .gitignore
  17. build.gradle
  18. CHANGES.txt
  19. code_version.sh
  20. DEV-README.md
  21. gradle.properties
  22. gradlew
  23. LICENSE.txt
  24. NOTICE.txt
  25. README.md
  26. settings.gradle
README.md

Cassandra Analytics

Cassandra Spark Bulk Reader

The open-source repository for the Cassandra Spark Bulk Reader. This library allows integration between Cassandra and Spark job, allowing users to run arbitrary Spark jobs against a Cassandra cluster securely and consistently.

This project contains the necessary open-source implementations to connect to a Cassandra cluster and read the data into Spark.

For example usage, see the example repository; sample steps:

import org.apache.cassandra.spark.sparksql.CassandraDataSource
import org.apache.spark.sql.SparkSession

val sparkSession = SparkSession.builder.getOrCreate()
val df = sparkSession.read.format("org.apache.cassandra.spark.sparksql.CassandraDataSource")
                          .option("sidecar_instances", "localhost,localhost2,localhost3")
                          .option("keyspace", "sbr_tests")
                          .option("table", "basic_test")
                          .option("DC", "datacenter1")
                          .option("createSnapshot", true)
                          .option("numCores", 4)
                          .load()

Cassandra Spark Bulk Writer

The Cassandra Spark Bulk Writer allows for high-speed data ingest to Cassandra clusters running Cassandra 3.0 and 4.0.

Developers interested in contributing to the Analytics library, please see the DEV-README.

Getting Started

For example usage, see the example repository. This example covers both setting up Cassandra 4.0, Apache Sidecar, and running a Spark Bulk Reader and Spark Bulk Writer job.