0
名前を含むファイルを読み込み、タイムスタンプデータとともに、SparkとScalaを使用してcassandraテーブルに挿入しようとしています。私がしようとしたとき、私はコードを実行しようとすると、以下の私のコードSpark Scalaを使用してCassandraにタイムスタンプを挿入
case class Names(name:String, auditDate:DateTime)
def main(args: Array[String]): Unit = {
System.setProperty("hadoop.home.dir", "D:\\backup\\lib\\winutils");
val conf = new SparkConf()
.set("spark.cassandra.connection.host", "172.16.109.202")
//.set("spark.cassandra.connection.host", "192.168.1.17")
.setAppName("CassandraLoader")
.setMaster("local")
var context = new SparkContext(conf)
var namesFile = context.textFile("src/main/resources/names.txt")
namesFile.map(x=>Names(x,DateTime.now()))
.saveToCassandra("practice","names",SomeColumns("name", "insert_date"))
}
カサンドラテーブルの詳細は
CREATE TABLE practice.names (
name text PRIMARY KEY,
insert_date timestamp
)
の下でされている、私は以下のエラー
Exception in thread "main" java.lang.IllegalArgumentException: requirement failed: Columns not found in com.sample.practice.Names: [insert_date]
at scala.Predef$.require(Predef.scala:233)
at com.datastax.spark.connector.mapper.DefaultColumnMapper.columnMapForWriting(DefaultColumnMapper.scala:108)
at com.datastax.spark.connector.writer.MappedToGettableDataConverter$$anon$1.<init>(MappedToGettableDataConverter.scala:29)
at com.datastax.spark.connector.writer.MappedToGettableDataConverter$.apply(MappedToGettableDataConverter.scala:20)
at com.datastax.spark.connector.writer.DefaultRowWriter.<init>(DefaultRowWriter.scala:17)
at com.datastax.spark.connector.writer.DefaultRowWriter$$anon$1.rowWriter(DefaultRowWriter.scala:31)
at com.datastax.spark.connector.writer.DefaultRowWriter$$anon$1.rowWriter(DefaultRowWriter.scala:29)
at com.datastax.spark.connector.writer.TableWriter$.apply(TableWriter.scala:271)
at com.datastax.spark.connector.RDDFunctions.saveToCassandra(RDDFunctions.scala:36)
at com.sample.practice.CqlInsertDate$.main(CqlInsertDate.scala:30)
at com.sample.practice.CqlInsertDate.main(CqlInsertDate.scala)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)
を取得していますRDDをcassandraに保存する代わりに印刷すると、以下の出力が得られます。
Names(Frank,2017-01-30T14:03:16.911+05:30)
Names(Jean,2017-01-30T14:03:17.115+05:30)
Names(Joe,2017-01-30T14:03:17.116+05:30)
以下は私のSBTファイルの詳細
version := "1.0"
scalaVersion := "2.10.6"
libraryDependencies += "com.datastax.spark" % "spark-cassandra-connector_2.10" % "2.0.0-M3"
libraryDependencies += "org.apache.spark" % "spark-core_2.10" % "2.0.2"
libraryDependencies += "org.apache.spark" % "spark-sql_2.10" % "2.0.2"
libraryDependencies += "org.apache.spark" % "spark-hive_2.10" % "2.0.2"
私はカサンドラ2.1を使用しています。助けてください。前もって感謝します。
これは機能します。ありがとう! – mvg