Spark Dataframe使用教程和Tips

Databricks官方文档

https://docs.databricks.com/spark/latest/dataframes-datasets/introduction-to-dataframes-scala.html#working-with-dataframes

内置函数 https://spark.apache.org/docs/2.0.2/api/java/org/apache/spark/sql/functions.html

Tips

  1. 数据的精度

    1
    2
    3
    4
    import  org.apache.spark.sql.functions._
    schemaPeople.agg(sum("today_pay").cast(DecimalType(precision=38, scale=9))).alias("today_pay_sum")
    // precision 数据长度
    // scale 小数长度
  2. 关联join的使用
    官方的示例中,df.join(df2, ‘name’, ‘outer’)这种用法是错误的,
    只能使用schemaPeople.as(“a”).join(schemaPeople.as(“b”), $”a.name” === $”b.name”, “outer”),必须指明两个df join的字段

  3. 添加列
    追加列信息,下一步处理时,必须使用val newDF = schemaPeople.withColumn(“add_col”, lit(“new col”))重新赋值

  4. column的空值判断
    NO:df.filter(col(‘xxx’) is not None)
    YES:df.filter(col(‘xxx’).isNotNull())
  5. column常量赋值
    用lit()包装,如df.withColumn(“src”, lit(“mobile”))