JavaのSpark SQLを使用したCassandraデータのクエリー

複数のCassandraカラム・ファミリーにまたがるJavaアプリケーションでSpark SQLクエリーを実行できます。Spark SQLを使用してCassandraデータをクエリーするJavaアプリケーションには、Spark構成インスタンスとSparkコンテキスト・インスタンスが必要になります。

Spark SQLを使用してCassandraデータをクエリーするJavaアプリケーションには、まず、Spark構成インスタンスとSparkコンテキスト・インスタンスが必要となります。

dse.jarファイルのデフォルトの場所は、インストールのタイプによって異なります。
Installer-Servicesおよびパッケージ・インストール /usr/share/dse/dse.jar
Installer-No Servicesおよびtarボール・インストール install_location/lib/dse.jar

Sparkコンテキスト・オブジェクトは、Cassandraに接続するためのCassandra対応Spark SQLコンテキスト・オブジェクトを作成するために使用されます。DataStaxでは、HiveContextインスタンスを使用することをお勧めしています。HiveContextSQLContextのスーパーセットであり、HiveQLを使用してさらに複雑なクエリーを作成できるためです。JavaSparkContextオブジェクトを使用して、org.apache.spark.sql.hive.HiveContextのインスタンスを作成します。

Spark構成オブジェクトとSparkコンテキストを作成します。

// create a new configuration
SparkConf conf = new SparkConf()
.setAppName( "My application");
// create a Spark context
JavaSparkContext sc = new JavaSparkContext(conf);
HiveContext hiveContext = new HiveContext(sc.toSparkContext(sc));

Sparkコンテキストが作成されると、それを使用してクエリーからDataFrameインスタンスを作成できるようになります。クエリーは、SparkContext.sqlメソッドを呼び出すことによって実行されます。


DataFrame employees = hiveContext.sql("SELECT * FROM company.employees");
employees.registerTempTable("employees");
DataFrame managers = hiveContext.sql("SELECT name FROM employees WHERE role == 'Manager' ");

返されるDataFrameオブジェクトは、標準のSpark処理をサポートします。

employees.collect();