def main()

in GlueCustomConnectors/gluescripts/withoutConnection/JDBCSalesforce.scala [6:43]


  def main(sysArgs: Array[String]) {
    val conf = new SparkConf().setAppName("JDBCSalesforce").setMaster("local")
    val spark: SparkContext = new SparkContext(conf)
    val glueContext: GlueContext = new GlueContext(spark)
    val rootLogger = Logger.getRootLogger()
    rootLogger.setLevel(Level.ERROR)
    // Please update the values in the optionsMap to connect to your own data source
    val optionsMap = Map(
      "dbTable" -> "Account",
      "partitionColumn" -> "RecordId__c",
      "lowerBound" -> "0",
      "upperBound" -> "123",
      "numPartitions" -> "6",
      "url" -> "jdbc:partner:salesforce:user=${user};Password=${Password};SecurityToken=${SecurityToken}",
      "secretId" -> "my-secret", // the secret stores values of user, Password and SecurityToken
      "dataSource" -> "salesforce",
      "className" -> "partner.jdbc.salesforce.SalesforceDriver"
    )
    val customSource = glueContext.getSource(
      connectionType = "custom.jdbc", // for marketplace workflow, use marketplace.jdbc
      connectionOptions = JsonOptions(optionsMap),
      transformationContext = "")
    val dyf = customSource.getDynamicFrame()
    dyf.printSchema()
    dyf.show()

    val sinkOptionsMap = Map(
      "dbtable" -> "Account",
      "secretId" -> "my-secret", // the secret stores values of user, Password and SecurityToken
      "className" -> "partner.jdbc.salesforce.SalesforceDriver",
      "url" -> "jdbc:partner:salesforce:user=${user};Password=${Password};SecurityToken=${SecurityToken}"
    )

    val customSink = glueContext.getSink(
      connectionType = "custom.jdbc",
      connectionOptions = JsonOptions(sinkOptionsMap))
    customSink.writeDynamicFrame(dyf)
  }