0

列のマッピングを変更して追加したかったのです。 JavaでSpark Cassandra Connectorを使用して列マッピングをカスタマイズするには、以下の方法よりも優れた方法がありますか?JavaでSpark Cassandra Connectorを使用して列マッピングをカスタマイズする方法は?

ColumnName song_id = new ColumnName("song_id", Option.empty()); 
CollectionColumnName key_codes = new ColumnName("key_codes", Option.empty()).append(); 
List<ColumnRef> collectionColumnNames = Arrays.asList(song_id, key_codes); 
scala.collection.Seq<ColumnRef> columnRefSeq = JavaApiHelper.toScalaSeq(collectionColumnNames); 

javaFunctions(songStream) 
       .writerBuilder("demo", "song", mapToRow(PianoSong.class)) 
       .withColumnSelector(new SomeColumns(columnRefSeq)) 
       .saveToCassandra(); 

これはthis Spark Streaming codeサンプルから取られます。

答えて

1

ちょうどあなたがaliasを設定することで、名前を変更することができますし、次のクラスを取るcollectionBehaviorと挿入の動作を変更することができ、コンストラクタ

case class CollectionColumnName(
    columnName: String, 
    alias: Option[String] = None, 
    collectionBehavior: CollectionBehavior = CollectionOverwrite) extends ColumnRef 

を持って CollectionColumnName

をあなたのコラム参照の使用します。あなただけもう少しのJava-Y見え、もう少し明示的である

CollectionColumnName appendColumn = 
    new CollectionColumnName("ColumnName", Option.empty(), CollectionPrepend$.MODULE$); 

を行うことができることを意味し

Api Link

/** Insert behaviors for Collections. */ 
sealed trait CollectionBehavior 
case object CollectionOverwrite extends CollectionBehavior 
case object CollectionAppend extends CollectionBehavior 
case object CollectionPrepend extends CollectionBehavior 
case object CollectionRemove extends CollectionBehavior 

。このコードの目的は他にありましたか?

+0

これが機能します - thanks @RussS –

関連する問題