2
我通常會從Cassandra的數據加載到Apache的星火使用Java這樣:如何將Cassandra ResultSet轉換爲Spark DataFrame?
SparkContext sparkContext = StorakleSparkConfig.getSparkContext();
CassandraSQLContext sqlContext = new CassandraSQLContext(sparkContext);
sqlContext.setKeyspace("midatabase");
DataFrame customers = sqlContext.cassandraSql("SELECT email, first_name, last_name FROM store_customer " +
"WHERE CAST(store_id as string) = '" + storeId + "'");
但是想象一下,我有一個sharder,我需要幾個partion密鑰加載到該數據幀。我可以在我的查詢中使用WHERE IN(...)並再次使用cassandraSql方法。但是由於在協調器節點方面存在單點故障的臭名昭着的問題,我有點不情願使用WHERE IN。這是在這裏解釋說:
是否有使用幾個查詢,但它們加載到一個單一的數據幀的方法嗎?
感謝您的回答!是的,我想到了這一點,但不確定Spark方面的性能影響。你認爲有什麼? –
@MilenKovachev聯盟非常高效,因爲它不需要任何洗牌。但是,請注意,它可能會刪除您的分區。看到這裏:http://stackoverflow.com/questions/29977526/in-apache-spark-why-does-rdd-union-does-not-preserve-partitioner –
假設我有一個可變數量的密鑰,我需要檢索,我將不得不在for循環中運行查詢。有沒有辦法同時運行單個sqlContext.cassandraSql語句? –