2016-05-24 16 views
2

私はSpark/Cassandraアプリケーション(java)に取り組んでおり、UDT値を読み書きするときに問題が発生しました。すなわちCassandraのUDTをSparkで読む(Javaで)

CassandraJavaRDD<Pojo> rdd = javaFunctions(sc).cassandraTable("keyspace", "table", mapRowTo(Pojo.class)); 

は、マッピングのみプリミティブ型を含むC *テーブルから行われたときに正常に動作しますが、いくつかの列のためのUDTが使用されている場合、NPE

Requested a TypeTag of the GettableToMappedTypeConverter which can't deserialize TypeTags due to Scala 2.10 TypeTag limitation. They come back as nulls and therefore you see this NPE. 

で失敗します。

このNPEをバイパスして正しい逆シリアル化を達成するには、どのような方法が最適ですか?

thnx

ps。不思議なことに、Cの*テーブルへのJava POJOを書くことのような些細なコードで(プリミティブとのUDTの両方)正常に動作します:

javaFunctions(rdd).writerBuilder("keyspace", "table", mapToRow(Pojo.class)).saveToCassandra(); 

答えて

0

あなたがカサンドラにごUDTValueでヌルを持っている場合、それは起こります。 Sparkは、TypeTagの制限により、正しいエラーメッセージを提供できません。

Pojoクラスのnull可能フィールドがオプションとして宣言されていることを確認する必要があります。

関連する問題