所有 Spark SQL DataType 的 Scala 类型映射是啥
Posted
技术标签:
【中文标题】所有 Spark SQL DataType 的 Scala 类型映射是啥【英文标题】:What is the Scala type mapping for all Spark SQL DataType所有 Spark SQL DataType 的 Scala 类型映射是什么 【发布时间】:2015-12-30 05:21:23 【问题描述】:可在 here 中找到可用于 Spark SQL 的不同 DataType
s。谁能告诉我每个 Spark SQL 的DataType
s 对应的 Java/Scala 数据类型是什么?
【问题讨论】:
【参考方案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。
【讨论】:
以上是关于所有 Spark SQL DataType 的 Scala 类型映射是啥的主要内容,如果未能解决你的问题,请参考以下文章
[Spark]What's the difference between spark.sql.shuffle.partitions and spark.default.parallelism?
What’s new for Spark SQL in Apache Spark 1.3(中英双语)
在执行spar-sql程序中报错:java.lang.NoSuchMethodError: org.apache.spark.internal.Logging.$init$(Lorg/apache/s