加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

如何使用Scala DataFrameReader选项方法

发布时间:2020-12-16 09:56:57 所属栏目:安全 来源:网络整理
导读:Scala DataFrameReader有一个函数“option”,它具有以下签名: def option(key: String,value: String): DataFrameReader // Adds an input option for the underlying data source. 那么什么是底层数据源的“输入选项”,有人可以在这里分享一个如何使用这个
Scala DataFrameReader有一个函数“option”,它具有以下签名:

def  option(key: String,value: String): DataFrameReader 
   // Adds an input option for the underlying data source.

那么什么是底层数据源的“输入选项”,有人可以在这里分享一个如何使用这个函数的例子吗?

解决方法

Spark source code

def option(key: String,value: String): DataFrameReader = {
    this.extraOptions += (key -> value)
    this
  }

其中extraOptions只是一个Map并使用如下:

private def jdbc(
  url: String,table: String,parts: Array[Partition],connectionProperties: Properties): DataFrame = {
  val props = new Properties()
  // THIS
  extraOptions.foreach { case (key,value) =>
    props.put(key,value)
  }
  // connectionProperties should override settings in extraOptions
  props.putAll(connectionProperties)
  val relation = JDBCRelation(url,table,parts,props)(sqlContext)
  sqlContext.baseRelationToDataFrame(relation)
}

如您所见,它只是将附加属性传递给jdbc驱动程序的方法.

还有更通用的选项方法来传递Map而不是单个键值以及它在Spark documentation中的用法示例:

val jdbcDF = sqlContext.read.format("jdbc").options(
  Map("url" -> "jdbc:postgresql:dbserver","dbtable" -> "schema.tablename")).load()

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读