2017-12-26 2 views
0

저는 Memsql을 처음 사용합니다. Memsql 자동 증가 문제가 있습니다.Memsql 자동 증가

id(auto increment=1)으로 새 테이블을 만들었습니다. 삽입 명령을 사용하여 수동으로 삽입하는 동안 id(auto increment) 1을 표시하지만 스파크를 사용하는 동안에는 48,413,695,994,232,833부터 시작합니다.

스파크에서 더미 데이터 val test = Seq(("Test1", "600482", "46987"),("Test2", "600204", "4870A"),("Test3", "600204", "469870A")).toDF("confid", "confidprefix","salesid")을 생성합니다.

memsql-connector_2.11-2.0.4.jar, memsql-connector_2.11-2.0.2.jar를 사용했습니다. MemSQL에서

답변

0

, 자동으로 값을 생성 AUTO_INCREMENT에만 보장이 고유 - 그들은 같은 1, 2, 3 ... 내가이 개 그리 게이터 노드가 memsql 클러스터 내 5 개 노드에서 https://docs.memsql.com/sql-reference/v6.0/create-table/#auto-increment-behavior

+0

감사합니다. 링크를 살펴 보았습니다. 한 가지 질문입니다. 두 개의 클러스터에 3 개의 노드가 있고, 다른 하나에는 5 개의 노드가 있습니다. 그 5 노드 클러스터에서만 3 노드 클러스터에서 나는 자동 증분에 어떤 문제도 가지지 않는다. – Mukundan

+0

내가 말했듯이, 그것은 문제가 아니며 단순히 MemSQL의 auto_increment의 디자인입니다. Auto_increment 값을 1부터 시작할 수는 없습니다. 이러한 기능이 필요한 경우 응용 프로그램 측에서 직접 값을 생성해야합니다. 생성 된 특정 값은 집계 노드의 수에 따라 달라지며, 따라서 크기가 다른 클러스터에서 다른 값을 볼 수 있습니다. –

0

를 참조 순차적하지 않는 것이, 마스터 애그리 게이터 및 하위 애그리 게이터. 이제 memsql 클러스터에서 하위 통합자를 제거 했으므로 이제는 정상적으로 작동합니다. 자동 생성 ID가 올바르게 생성됩니다. 참고 자동 생성 된 값은 삽입을 실행하는 집계에 따라 다를 수 있습니다. 물론 하나의 애그리 게이터에서 일부 삽입을 실행하고 다른 애그리 게이터에서 일부 삽입을 실행하면 다른 자동 생성 값을 얻게됩니다. 또한 자동 생성 된 값과 명시 적으로 설정된 값이 충돌 할 수 있습니다.