使用Java的Spark 2.11,在Oracle中保存DataFrame会创建带双引号的列

时间:2017-10-15 08:29:48

标签: java apache-spark spark-dataframe apache-spark-dataset apache-spark-2.0

在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)

0 个答案:

没有答案