2016-09-13 31 views
1

我正在嘗試使用Google Guava的Bloom過濾器並使用Scala對其進行序列化。創建很容易:如何從Google Guava序列化布隆過濾器?

import com.google.common.hash.{BloomFilter,Funnels} 
val b = BloomFilter.create(Funnels.unencodedCharsFunnel,5e8.toLong,1e-6) 

但我不知道如何序列化..期待一個BloomFilter.serialize方法,但是沒有。什麼我缺少什麼?

的八邑是試圖把布隆過濾器的Array[Byte] ..

+0

你有沒有嘗試使用普通的舊的Java序列化? – marios

回答

1

你試試這個:

import java.io.FileInputStream; 
import java.io.FileOutputStream; 
import java.io.IOException; 
import java.io.ObjectInputStream; 
import java.io.ObjectOutputStream; 
import com.google.common.hash.{BloomFilter,Funnels} 

val b = BloomFilter.create(Funnels.unencodedCharsFunnel,5e8.toLong,1e-6) 

val stream = new ObjectOutputStream(new FileOutputStream(
      "/path/to/file/file.obj")) 

stream.writeObject(b) 
+0

我正在使用Spark,並且我想將驅動程序(主)的序列化'b'傳遞給執行者 - 我該怎麼做?我需要傳遞文件? – shakedzy

+0

我是Spark的新手,所以請帶上一點鹽。無需發送文件。您創建一個RDD,然後構建一個代表您想要對RDD數據執行轉換的操作流水線。 Spark將負責將計算(和數據)並行化到不同的執行者。 – Samar

+0

這將幫助它更清晰:https://www.quora.com/Is-my-understanding-to-parallel-operations-in-spark-correct – Samar