я обычно загружать данные из 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 в этом DataFrame. Я мог бы использовать WHERE IN (...) в моем запросе и снова использовать метод cassandraSql. Но я немного неохотно использую WHERE IN из-за печально известной проблемы с одноточечным отказом в терминах узла-координатора. Это объясняется здесь:
Есть ли способ использовать несколько запросов, но загрузить их в один DataFrame?
Спасибо за ответ! Да, я подумал об этом, но не был уверен в производительности на стороне искры. Как вы думаете, есть ли они? –
@MilenKovachev Union очень эффективен, так как он не требует перетасовки. Однако имейте в виду, что он может потенциально удалить ваш раздел. См. Здесь: http://stackoverflow.com/questions/29977526/in-apache-spark-why-does-rdd-union-does-not-preserve-partitioner –
Предполагая, что у меня есть переменное количество ключей, которые мне нужно получить , Мне придется запускать запросы в цикле for. Есть ли способ запуска отдельных операторов sqlContext.cassandraSql параллельно? –