Scala中的选项(Options )

Scala选项

选项 option 是一个包含一个值的容器,该值可以是两个不同值之一。

这两个值之一是“ none”,其他值可以是程序中有效的任何对象。

当接受从函数返回的值时可以使用Option,该函数可以在周期时间返回null,否则返回一些值。该选项类别返回两个实例:

  1. 当函数失败时,为空类的实例。

  2. 一个类的实例,当函数成功时。

这两个类都从option类继承。

语法:

使用option作为返回类型的函数的声明:

    def function_name(arguments) : Option[data_type]

举例说明如何操作选项

object Demo {
   def details(x: Option[String]) = x match {
      case Some(s) => s
      case None => "?"
   }
   def main(args: Array[String]) {
      val student = Map("name" -> "Ram", "standard" -> "10")
      println("show(student.get( \"name\")) : " + details(student.get( "name")) )
      println("show(student.get( \"percentage\")) : " + details(student.get( "percentage")) )
   }
}

输出结果

show(student.get( "name")) : Ram
show(student.get( "percentage")) : ?

Option vs NULL:哪个更好?

在Java编程中Option与NULL进行比较。在Java中使用null,偶尔需要处理它。如果未处理,则可能给出NullPointerException。在scala中使用Option时,不会发生此异常,这就是其用法更有效的原因。

Scala Options类的一些常用方法

方法描述
def get:A返回选项的值。
def isempty:Boolean没有值返回true,否则返回false。
def getOrElse(val)返回选项中某个值的值,如果没有则返回传递的值。
def  foreach()如果值存在则求值,否则不做任何事情
def flatmap()返回一些选项值的函数值。如果该值不存在,则返回None。
def productElementName(n)返回基于0的索引中第n个元素。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Scala 创建 Hudi 表需要使用 Hudi 提供的 Java API。以下是一个示例代码,用于创建一个 Hudi 表: ```scala import org.apache.hudi.DataSourceWriteOptions._ import org.apache.hudi.config.HoodieWriteConfig._ import org.apache.hudi.hive.MultiPartKeysValueExtractor import org.apache.hudi.keygen.SimpleKeyGenerator import org.apache.hudi.{DataSourceReadOptions, DataSourceWriteOptions, HoodieSparkSqlWriter} import org.apache.spark.sql.SparkSession val spark = SparkSession.builder.appName("CreateHudiTable").master("local").getOrCreate() // 数据源和目标地址 val sourcePath = "/path/to/source" val targetPath = "/path/to/target" // 配置选项 val writeConfig = Map( TABLE_NAME -> "my_hudi_table", RECORDKEY_FIELD_OPT_KEY -> "id", PRECOMBINE_FIELD_OPT_KEY -> "timestamp", PARTITIONPATH_FIELD_OPT_KEY -> "date", KEYGENERATOR_CLASS_OPT_KEY -> classOf[SimpleKeyGenerator].getName, // 读时合并小文件 COMBINE_BEFORE_INSERT_PROP -> "true", // 写入时合并小文件 COMBINE_BEFORE_UPSERT_PROP -> "true" ) // 读取源数据 val sourceDF = spark.read.format("csv").load(sourcePath) // 写入 Hudi 表 sourceDF.write .format("org.apache.hudi") .options(writeConfig) .option(PRECOMBINE_FIELD_OPT_KEY, "timestamp") .option(RECORDKEY_FIELD_OPT_KEY, "id") .option(PARTITIONPATH_FIELD_OPT_KEY, "date") .mode("overwrite") .save(targetPath) ``` 在上面的代码,我们使用了 Hudi 提供的配置选项来指定表的名称、记录键、预合并键、分区路径键和键生成器。我们还使用了 Spark SQL 的写入 API 将源数据写入 Hudi 表。 请注意,在运行上述代码之前,您需要将以下依赖项添加到您的项目: ```scala libraryDependencies += "org.apache.hudi" % "hudi-spark-bundle_2.11" % "0.9.0-incubating" % "provided" libraryDependencies += "org.apache.spark" %% "spark-core" % "2.4.5" libraryDependencies += "org.apache.spark" %% "spark-sql" % "2.4.5" ``` 另外,你需要将 Hadoop 和 Hive 的配置文件添加到项目

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值