内部認証を使用したspark-submitジョブの実行
内部認証を使用したspark-submitジョブの実行例
以下の例は、内部認証を使用してspark-submitジョブを実行する方法を示します。
dse spark-submit
を使用してSparkジョブを送信すると、SparkマスターのURLとSpark Cassandra接続のURLが自動的に設定されます。次に、Spark Confを使用してアプリケーション名を設定します。例:package simpleSpark;
import com.datastax.spark.connector.cql.CassandraConnector;
import org.apache.spark.SparkConf;
import org.apache.spark.SparkContext;
import org.apache.spark.api.java.JavaSparkContext;
public interface SparkConfSetup {
static public SparkConf getSparkConf() {
return new SparkConf()
.setAppName("SimpleSpark");
}
static public JavaSparkContext getJavaSparkContext() {
SparkContext usingSparkContext = new SparkContext(getSparkConf());
return new JavaSparkContext(usingSparkContext);
}
static public CassandraConnector getCassandraConnector() {
return CassandraConnector.apply((getSparkConf()));
}
}
- ソース・ファイルをgithubから複製します。
- Apache Mavenをインストールします。
- DataStax Enterprise JARファイルをローカルのリポジトリに追加します。
mvn install:install-file -Dfile=/usr/share/dse/dse.jar -DgroupId=com.datastax -DartifactId=dse -Dversion=4.8.3 -Dpackaging=jar
- mavenをプロジェクトに追加します。pom.xmlは以下のようになります。
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>BasicSparkDemo</groupId> <artifactId>BasicSparkDemo</artifactId> <packaging>jar</packaging> <version>0.1</version> <name>BasicSparkDemo</name> <url>http://www.datastax.com/</url> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>2.3.2</version> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> </plugins> </build> <dependencies> <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-core_2.10</artifactId> <version>1.2.1</version> <scope>provided</scope> </dependency> <dependency> <groupId>com.datastax.spark</groupId> <artifactId>spark-cassandra-connector_2.10</artifactId> <version>1.2.5</version> <scope>provided</scope> </dependency> <dependency> <groupId>com.datastax.spark</groupId> <artifactId>spark-cassandra-connector-java_2.10</artifactId> <version>1.2.5</version> <scope>provided</scope> </dependency> <dependency> <groupId>com.datastax</groupId> <artifactId>dse</artifactId> <version>4.7.3</version> <scope>provided</scope> </dependency> </dependencies> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> </project>
- コードを編集してSparkConfオブジェクトを作成します。
package simpleSpark; import com.datastax.spark.connector.cql.CassandraConnector; import org.apache.spark.SparkConf; import org.apache.spark.SparkContext; import org.apache.spark.api.java.JavaSparkContext; import com.datastax.bdp.spark.DseSparkConfHelper; /** * When you submit a Spark Job using dse spark-submit it automatically sets the Spark Master URL and the Spark Cassandra Connection URL. * The Spark Conf then just needs to set the app name. **/ public interface SparkConfSetup { static public SparkConf getSparkConf() { return DseSparkConfHelper.enrichSparkConf(new SparkConf() .setAppName("SimpleSpark") }; } static public JavaSparkContext getJavaSparkContext() { SparkContext usingSparkContext = new SparkContext(getSparkConf()); return new JavaSparkContext(usingSparkContext); } static public CassandraConnector getCassandraConnector() { return CassandraConnector.apply((getSparkConf())); }
- Mavenを使用してパッケージを構築します。
mvn clean package
- spark-submitに認証を使用するには、構成されているCassandra認証スキーマに対して認証する認証情報を指定します。
認証情報を複数の方法で提供できます。「認証情報」を参照してください。dse -u cassandra -p cassandra spark-submit --class simpleSpark.SparkWordCount ./target/BasicSparkDemo-0.1.jar