私は〜4bnレコードを含むデータフレームを持っています。多くの列は64ビットの整数ですが、データを損失することなく32ビットまたは16ビットの整数に切り捨てることができます。64ビット整数をスパークデータフレームの32ビット(16ビット)intに変換する価値はありますか?
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())
これは54.7 MBのRAMを使用していることを示しています。私がこれをしないと、RAMに56.7MBと表示されます。
したがって、int型を切り捨てようとする価値はありますか?
私はスタンドアローンモードでSpark 2.01を使用しています。
スパークはSSEとそれに類する指示を利用しませんか? –
Sparkは、JVMが与えることができるものだけを使用します。 Javaの場合、数値型を変更することで実際の速度向上はありません:http://stackoverflow.com/questions/2380696/java-short-integer-long-performance – Mariusz