나는 다음과 같은 카산드라 DM 있습니다스파크 - 삽입 문제
CREATE TABLE table (
id uuid,
timestamp timestamp STATIC,
value1 text STATIC,
value2 int,
value3 text,
data map <text,text>,
PRIMARY KEY (id, value2)
);
지금까지 너무 좋아. 지금은 내가 처음 삽입 할 형식의 유형이있다 :
INSERT INTO table (id, timestamp, value1)
VALUES (<uuid>,<timestamp>,<some-string>);
및
INSERT INTO table (id, value2, value3, data)
VALUES (<some-id>,<some-int>,<some-string>, <some-simple-json-map>)
CQL 문은 모두 잘 작동합니다. 이제 스파크 스트리밍 앱에서 데이터를 가져 와서 내 CQL 문과 같은 스타일의 데이터 프레임으로 포맷합니다. 나는 문의 각 세트에 대해 문의 한 여러 세트를 얻을 2. 이제
내가 처음 CQL 문 불꽃처럼 내 dataframe는 카산드라 예외가 발생합니다 저장할 때 문제가 있습니다
java.lang.IllegalArgumentException:
Some primary key columns are missing in RDD or have not been selected: value2
at com.datastax.spark.connector.writer.TableWriter$.checkMissingPrimaryKeyColumns(TableWriter.scala:190)
at com.datastax.spark.connector.writer.TableWriter$.checkColumns(TableWriter.scala:257)
at com.datastax.spark.connector.writer.TableWriter$.apply(TableWriter.scala:275)
at com.datastax.spark.connector.RDDFunctions.saveToCassandra(RDDFunctions.scala:36)
...
다음의 스키마를 내 dataframe : 내가 버지니아를 추가 할 때
data.select("id", "timeStamp", "value1")
.write.format("org.apache.spark.sql.cassandra")
.mode(SaveMode.Append)
.options(Map("keyspace" -> "some_keyspace","table" -> "table"))
.save()
:
root
|-- id: string (nullable = true)
|-- timestamp: long (nullable = true)
|-- value1: string (nullable = true)
가 한 Statment 저장 내 lue 2 열 내 데이터 프레임 문을 잘 작동합니다.
root
|-- id: string (nullable = true)
|-- timestamp: long (nullable = true)
|-- value1: string (nullable = true)
|-- value2: integer (nullable = false)
Datamodel을 변경하지 않고 CQL 문과 같이 작동시키는 방법이 있습니까?
정적 열이있는 버그처럼 보입니다. Jira 파일을 제출해야합니다. – RussS