内部認証を使用したspark-submitジョブの実行

内部認証を使用したspark-submitジョブの実行例

この例では、内部認証を使用してspark-submitジョブを実行する方法を示します。

dse spark-submitを使用してSparkジョブを送信すると、SparkマスターURLとSparkデータベース接続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()));    
  }
}
  1. githubからソース・ファイルの複製を作成します。
  2. Apache Mavenをインストールします。
  3. DataStax Enterprise Spark JARファイルをローカル・リポジトリに追加します。
    mvn install:install-file -Dfile=/usr/share/dse/dse-spark-version.jar -DgroupId=com.datastax -DartifactId=dse -Dversion=5.0.3 -Dpackaging=jar
  4. 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>https://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>2.0.2</version>
                <scope>provided</scope>
            </dependency>
            <dependency>
                <groupId>com.datastax.spark</groupId>
                <artifactId>spark-cassandra-connector</artifactId>
                <version>2.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.datastax</groupId>
                <artifactId>dse</artifactId>
                <version>5.0.3</version>
                <scope>provided</scope>
            </dependency>
        </dependencies>
    
        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        </properties>
    
    </project>
  5. コードを編集して、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;
    
    /**
    *  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 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()));
        }
  6. Mavenを使用してパッケージを構築します。
    mvn clean package
  7. 認証とspark-submitを併用するには、構成済みDSE認証スキーマに対して認証するように認証情報を指定します。
    dse -u username -p password spark-submit --class simpleSpark.SparkWordCount ./target/BasicSparkDemo-0.1.jar
    
    認証情報はいくつかの方法で指定できます。「認証対応クラスターへの接続」を参照してください。