スコープは、HDFS から読み取り、Spark でフィルター処理し、結果を Cassandra に書き込むことです。私はSBTでパッケージ化して実行しています。
ここに問題があります: HDFS から Spark への読み取りには、sbt ビルド ファイルに次の行が必要です。
libraryDependencies += "org.apache.hadoop" % "hadoop-client" % "2.0.0-cdh4.5.0"
ただし、Cassandra への読み書きは
val casRdd = sc.newAPIHadoopRDD(
job.getConfiguration(),
classOf[ColumnFamilyInputFormat],
classOf[ByteBuffer],
classOf[SortedMap[ByteBuffer, IColumn]])
Hadoop クライアントのライブラリ依存関係が除外されているか、0.1 または 1.2.0 または 2.2.0 (CDH 以外) に変更されている場合にのみ機能します。残念ながら、HDFS の読み取りはできません。hadoop-client 行が追加されている場合、Cassandra から読み取ろうとすると、次のエラーがスローされます。
java.lang.IncompatibleClassChangeError: Found interface org.apache.hadoop.mapreduce.JobContext, but class was expected
したがって、Cassandra の読み取り/書き込みの問題は、Cloudera に関連する問題のように思われますか? libraryDependencies 行を削除するだけで、Cassandra の読み取り/書き込みが機能することに注意してください。
HDFS と Cassandra の読み取りは同じプロジェクトで動作する必要があるため、この問題はどのように解決できますか?