zoukankan      html  css  js  c++  java
  • 工作随笔-20171024

    appName(s"Crossroadfree") 这个是个什么语法?

    这个是字符串插值用法,从scala2.10.0版本开始,在s""的里面可以使用$val来嵌入变量。

    val name="James"
    println(s"Hello,$name")//Hello,James
    

    相类似的插值还有f 和raw

    val height=1.9d
    val name="James"
    println(f"$name%s is $height%2.2f meters tall")//James is 1.90 meters tall f 插值器是类型安全的。如果试图向只支持 int 的格式化串传入一个double 值,编译器则会报错。例如:
    
    scala>raw"a
    b"
    res1:String=a
    b 当不想输入
    被转换为回车的时候,raw 插值器是非常实用的。
    

    https://docs.scala-lang.org/zh-cn/overviews/core/string-interpolation.html

    // 文章里面的高级算法没看明白。

    =================

    spark2.0的新特性

    https://databricks.com/blog/2016/05/11/apache-spark-2-0-technical-preview-easier-faster-and-smarter.html

    https://www.iteblog.com/archives/1668.html

    =============================

    scala中object和class的区别?

    class:
    1 所有类的变量默认是public的,可以设置private,protected, public
    2 scala的方法默认都是public的, 可以设置为private,protected,public甚至更多https://alvinalexander.com/scala/how-to-control-scala-method-scope-object-private-package

    object就相当于static的class,object中定于的方法,属性都可以被静态调用。

    ===============================

    看到同事有一个match语法,是个什么意思?

        val date = CommonUtil.parseDate(args(3)) match {
          case Some(_: LocalDate) => args(3)
          case None => {
            System.err.println("Date param should be yyyyMMdd pattern")
            System.exit(1)
          }
        }
    

    这个match就相当于是switch case,是scala里面的关键词

    这个逻辑就是判断parseDate解析出来的是不是符合日期的格式。如果是的话,就把args(3) 赋值给date,否则的话,就退出。

    =================================

    同事的代码中看到这么一行

    println(functions.input_file_name)
    

    好像是说获取当前这个spark的rdd的列的名字?

    运行的时候发现这个并没有啥用。

    =================================

    同事的代码看到这么一行:

    sqlContext.sql("""
        SELECT user_no,oper_code
        FROM cui.operation_data_android
        WHERE user_no <> 'null' AND oper_time>='20160101000000' AND oper_time<'20160114000000'
    """).take(1)
    

    三个引号是代表多行字符串。当我们的字符串有多行的时候,就使用这个多行字符串进行获取。

    它也是支持字符串插值的。

    val count = "2"
    
    val weightGroupSql =
      s"""
        |SELECT    first(cityId) as cityId,
        |          startLink,
        |          endLink,
        |          count(1)/${count} as count
        |FROM
        |   test
        |   group by startLink, endLink
        |
          """.stripMargin
    

    ============================

    看同事的代码有下面一行:

    val junctionDriverBasicData = junctionDriverBasicDataLines
            .map(item => Tuple1(DataParseUtil.parseJunctionDriverBasicData(item)))
            .filter(!_._1.isEmpty)
            .map(_._1.get)
    

    询问他为什么这里有个Tuple1,理由是DataParseUtil.parseJunctionDriverBasicData 这个函数有可能返回null。

    =================================

    scala中的集合?

    scala中集合分为可变集合和不可变集合

  • 相关阅读:
    375D.Tree and Queries(树上启发式合并+离线)
    600E.Lomsat gelral (树上启发式合并)
    741D.Arpa’s letter-marked tree and Mehrdad’s Dokhtar-kosh paths(树上启发式合并+状压)
    Nowcoder13249.黑白树(树形DP)
    Nowcoder51179.选课(树形背包)
    Nowcoder20811.蓝魔法师(树形背包)
    Nowcoder19782.Tree(树形DP+逆元)
    Gym102292M.Monster Hunter(树形背包+滚动数组)
    大数据运维(61)Linux环境安装PostgreSQL-10.1
    大数据运维(60)Hive on Spark配置
  • 原文地址:https://www.cnblogs.com/yjf512/p/7727418.html
Copyright © 2011-2022 走看看