【发布时间】:2016-11-15 17:30:16
【问题描述】:
我有一个包含约 40 亿条记录的数据框。许多列是 64 位整数,但可以截断为 32 位或 16 位整数而不会丢失数据。当我尝试使用以下函数转换数据类型时:
def switchType(df, colName):
df = df.withColumn( colName + "SmallInt", df[colName].cast(ShortType()))
df = df.drop(colName)
return df.withColumnRenamed(colName + 'SmallInt', colName)
positionsDf = switchType(positionsDf, "FundId")
# repeat for 4 more cols...
print(positionsDf.cache().count())
这显示在 ram 中占用了 54.7 MB。当我不这样做时,它在 ram 中显示为 56.7MB。
那么,是否值得尝试截断整数?
我在独立模式下使用 Spark 2.01。
【问题讨论】:
标签: apache-spark pyspark