1. schema参数,AssertionError: dataType should be DataType
# AssertionError: dataType should be DataType schema = StructType([ # true代表不为空 StructField("col_1", StringType, True), StructField("col_2", StringType, True), StructField("col_3", StringType, True), ] ) #原因:StringType等后面没有加括号“()” #修改为: schema = StructType([ # true代表不为空 StructField("col_1", StringType(), True), StructField("col_2", StringType(), True), StructField("col_3", StringType(), True), ] )
2. pyspark目前的数据类型有:
NullType、StringType、BinaryType、BooleanType、DateType、TimestampType、DecimalType、DoubleType、FloatType、ByteType、IntegerType、LongType、ShortType、ArrayType、MapType、StructType(StructField)等,要根据情况使用,注意可能的溢出问题。
其中大佬总结的对应python数据类型如下:
NullType | None |
StringType | basestring |
BinaryType | bytearray |
BooleanType | bool |
DateType | datetime.date |
TimestampType | datetime.datetime |
DecimalType | decimal.Decimal |
DoubleType | float(double precision floats) |
FloatType | float(single precision floats) |
ByteType | int(a signed integer) |
IntegerType | int(a signed 32-bit integer) |
LongType | long(a signed 64-bit integer) |
ShortType | int(a signed 16-bit integer) |