什么是所有Spark SQL DataType的Scala类型映射

aa8*_*a8y 8 sql scala sqldatatypes apache-spark apache-spark-sql

DataType可以在此处找到可用于Spark SQL 的不同内容.任何人都可以告诉我每个Spark SQL的相应Java/Scala数据类型DataType是什么?

zer*_*323 18

直接来自Spark SQL和DataFrame指南:

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
Run Code Online (Sandbox Code Playgroud)


bsp*_*ion 7

对于那些试图找到 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) |
Run Code Online (Sandbox Code Playgroud)

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