在Spark(Java)中使用以下代码,我们在Oracle中保存数据框,如果不存在,它也会创建一个表。
Dataset<Row> someAccountDF = sparkSession.createDataFrame(impalaAccountsDF.toJavaRDD(), AccountSchema.getSchema());
dataFrame.write().mode(saveMode).jdbc(connectionUrl, tableName, connectionParams);
现在它创建了带双引号的列,如 -
CREATE TABLE "SCHEMA"."ACCOUNT"
( "primaryidentifier" VARCHAR2(255 BYTE),
"systemdata" VARCHAR2(255 BYTE), ......
)
所以当我查询时
select primaryidentifier from account;
//不起作用
但是当我查询时
select "primaryidentifier" from account;
//工作
但它在我们的代码中创建了映射等问题,并且在columnname中使用双引号也不太好。
Out SchemaClass如下所示。我想要像Varchar2而不是StringType:
public class AccountSchema {
public StructType getSchema() {
StructType schemaTyped = new StructType()
.add("primaryidentifier", StringType)
.add("systemdata", StringType)
.............}
}
我看到了this question但无法遵循它(我非常了解Scala)