【问题标题】:What is the Scala type mapping for all Spark SQL DataType所有 Spark SQL DataType 的 Scala 类型映射是什么
【发布时间】:2015-12-30 05:21:23
【问题描述】:

可在 here 中找到可用于 Spark SQL 的不同 DataTypes。谁能告诉我每个 Spark SQL 的DataTypes 对应的 Java/Scala 数据类型是什么?

【问题讨论】:

    标签: sql scala apache-spark apache-spark-sql sqldatatypes


    【解决方案1】:

    直接来自Spark SQL and DataFrame Guide

    Data type       |    Value type in Scala
    ------------------------------------------------
    ByteType        |    Byte   
    ShortType       |    Short  
    IntegerType     |    Int    
    LongType        |    Long   
    FloatType       |    Float  
    DoubleType      |    Double     
    DecimalType     |    java.math.BigDecimal
    StringType      |    String
    BinaryType      |    Array[Byte]
    BooleanType     |    Boolean 
    TimestampType   |    java.sql.Timestamp
    DateType        |    java.sql.Date
    ArrayType       |    scala.collection.Seq   
    MapType         |    scala.collection.Map   
    StructType      |    org.apache.spark.sql.Row
    

    【讨论】:

    • Java 有这样的映射吗?
    【解决方案2】:

    对于那些试图查找 Java 类型的人,它们现在也托管在来自zero323's answer 的链接中。要在此处记录当前版本:

    Data type     |    Value type in Java              |    API to access or create a data type
    -------------------------------------------------------------------------------------------
    ByteType      |    byte or Byte                    |    DataTypes.ByteType
    ShortType     |    short or Short                  |    DataTypes.ShortType
    IntegerType   |    int or Integer                  |    DataTypes.IntegerType
    LongType      |    long or Long                    |    DataTypes.LongType
    FloatType     |    float or Float                  |    DataTypes.FloatType
    DoubleType    |    double or Double                |    DataTypes.DoubleType
    DecimalType   |    java.math.BigDecimal            |    DataTypes.createDecimalType() or DataTypes.createDecimalType(precision, scale).
    StringType    |    String                          |    DataTypes.StringType
    BinaryType    |    byte[]                          |    DataTypes.BinaryType
    BooleanType   |    boolean or Boolean              |    DataTypes.BooleanType
    TimestampType |    java.sql.Timestamp              |    DataTypes.TimestampType
    DateType      |    java.sql.Date                   |    DataTypes.DateType
    ArrayType     |    java.util.List                  |    DataTypes.createArrayType(elementType) or DataTypes.createArrayType(elementType, containsNull).
    MapType       |    java.util.Map                   |    DataTypes.createMapType(keyType, valueType) or DataTypes.createMapType(keyType, valueType, valueContainsNull)
    StructType    |    org.apache.spark.sql.Row        |    DataTypes.createStructType(fields)
    StructField   |    The value type in Java of the   |    DataTypes.createStructField(name, dataType, nullable)
                  |    data type of this field (For    |
                  |    example, int for a StructField  |
                  |    with the data type IntegerType) |
    

    在使用 StructTypes 时需要特别注意的一点 - 如果您希望在另一个中声明一个空的 StructType 作为占位符值,您必须使用 new StructType() 而不是建议的 DataTypes.createStructType((StructField)null) 来防止 null指针。记得在使用之前用 StructFields 实例化嵌套的 StructType。

    【讨论】:

      猜你喜欢
      • 2021-08-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多