2016-11-08 61 views
0

我正在使用CacheConfiguration與setIndexedTypes(Long.class,StructType.class)是StructType是Spark的一個對象,並使用igniteRDD.saveValues(df.rdd())來推送值。但是,當我嘗試在緩存中獲取「在CacheConfiguration上使用setIndexedTypes或setTypeMetadata方法來啓用」時。我知道在POJO上使用querysqlfields註釋字段,但此處的值是Spark對象,我們如何才能做到這一點。如何查詢點燃RDD?

+0

您如何打算查詢'StructType'?這對我來說看起來不正確。你能否提供整個測試作爲一個小型的GitHub項目?我將能夠以這種方式提供反饋。 –

+0

@Valentin我試圖在點燃RDD內採集地板數據。我正在關注這個[示例](https://github.com/erasmas/ignite-playground/tree/master/src/main/java/ignite)。我可以獲取點燃RDD內的數據(點燃遮陽板控制檯進行檢查)。 – user2784095

+0

這個例子不做查詢。我回答了。 –

回答

0

這不起作用,因爲StructType類對Ignite SQL一無所知。您應該創建自己的鍵和值類,並在加載期間將每個StructType實例轉換爲鍵值對(使用savePairs方法)。之後,您將能夠按此處所述配置SQL:https://apacheignite.readme.io/docs/sql-queries

+0

我的不好實際上我從IgniteContext獲取IgniteRDD,並且它與cacheConfiguration(我正在使用cacheConfiguration存儲RDD模式)無關。 IgniteRDD主要有兩種方法,例如savePairs和saveValues。他們都需要RDD對象。我從Spark DataFrame對象獲取RDD對象。我怎樣才能使這個RDD(來自DataFrame.rdd())SQL在點燃中符合。請看這個[示例](https://github.com/erasmas/ignite-playground/blob/master/src/main/java/ignite/CachedRddExample.java)。 – user2784095

+0

您應該創建適合Ignite SQL的自己的數據類型,映射原始RDD,以便將結構轉換爲此類型,然後將數據保存到Ignite中。 –

+0

我們如何將rdd(從parquet創建)映射到自己的數據類型(如果我沒有錯的話,java對象)。你能否爲此提供示例java代碼。 – user2784095