이 기능이 작동하지 않는 이유는 모르겠지만 아래에서 적용했지만 여전히 varchar (128) 대신 text
이 포함 된 테이블 (mysql)에 대한 스키마의 스파크 버전을 얻으려고합니다.) 지정하려고합니다. jdbc write로 내 컬럼에 대한 사용자 정의 데이터 유형을 작성하려고합니다. 스파크 2.1.0로 시도 :Spark createTableColumnTypes가 사용자가 제공 한 스키마가 아닌 것
def df2DB(
df: DataFrame,
batchSize: Int,
numPartitions: Int,
database: String,
table: String): Unit = {
val mdb = new MetadataBuilder()
mdb.putString("col1", "INT")
mdb.putString("col2", "VARCHAR(128)")
mdb.putString("col3", "VARCHAR(128)")
val createTableColTypes = mdb.build().json
df.write.format("jdbc")
.option("createTableColumnTypes", createTableColTypes)
.option("url", url)
.option("dbtable", s"${database}.${table}")
.option("user", user)
.option("password", pass)
.option("driver", driver)
.option("batchsize", batchSize)
.option("numPartitions", numPartitions)
.save()
}
가 나는 또한 성공없이이 형식을 시도 : 나는이 SQL 구문 오류가 발생하고있어이 같은 createTableOptions
를 사용하려고하는 경우에도
df.write.format("jdbc")
.mode(SaveMode.Overwrite)
.option("url", url)
.option("dbtable", s"${database}.${table}")
.option("user", user)
.option("password", pass)
.option("driver", driver)
.option("batchsize", batchSize)
.option("numPartitions", numPartitions)
.option("createTableColumnTypes", "COL1 INT, COL2 VARCHAR(128)")
.save()
. 나도 함께 또는 개별적으로 이러한 옵션을 사용의 좋은 예를 찾는 아니에요 :
.option("createTableOptions", "CREATE TABLE tbl1 (col1 int, col2 VARCHAR(128))").save()
감사합니다. 그것도 시도했지만 행운은 없다. 쓰기 후에도 int와 텍스트를 데이터베이스에 저장합니다. 나는 또한 MetadataBuilder()를 사용하는 것이 Json을 생성하기위한 올바른 방법이라고 생각했다. MySqlDialect를 조정하여이 작업을 수행하도록 사용자 정의해야합니까? 난 그냥 jdbc 쓰기에서 이러한 속성을 사용할 수 있고 DB에 올바르게 매핑 될 것이라고 생각. – horatio1701d