内部認証を使用した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()));    
  }
}
  1. ソース・ファイルをgithubから複製します。
  2. Apache Mavenをインストールします。
  3. DataStax Enterprise JARファイルをローカルのリポジトリに追加します。
    mvn install:install-file -Dfile=/usr/share/dse/dse.jar -DgroupId=com.datastax -DartifactId=dse -Dversion=4.8.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>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>
  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;
    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()));
        }
  6. Mavenを使用してパッケージを構築します。
    mvn clean package
  7. spark-submitに認証を使用するには、構成されているCassandra認証スキーマに対して認証する認証情報を指定します。
    dse -u cassandra -p cassandra spark-submit --class simpleSpark.SparkWordCount ./target/BasicSparkDemo-0.1.jar
    
    認証情報を複数の方法で提供できます。「認証情報」を参照してください。