【发布时间】:2015-11-11 13:52:19
【问题描述】:
我在我的 Java 应用程序中使用 Apache Spark。
我有两个DataFrames:df1 和 df2。 df1 包含 Rows 和 email、firstName 和 lastName。 df2 包含 Rows 和 email。
我想创建一个DataFrame: df3,其中包含df1 中的所有行,而df2 中不存在该电子邮件。
有没有办法用 Apache Spark 做到这一点?我尝试从df1 和df2 创建JavaRDD<String>,方法是将它们转换为toJavaRDD() 并过滤df1 以包含所有电子邮件,然后使用subtract,但我不知道如何映射新的@ 987654342@ 到ds1 并获得DataFrame。
基本上我需要df1 中的所有行,其电子邮件不在df2 中。
DataFrame customers = sqlContext.cassandraSql("SELECT email, first_name, last_name FROM customer ");
DataFrame customersWhoOrderedTheProduct = sqlContext.cassandraSql("SELECT email FROM customer_bought_product " +
"WHERE product_id = '" + productId + "'");
JavaRDD<String> customersBoughtEmail = customersWhoOrderedTheProduct.toJavaRDD().map(row -> row.getString(0));
List<String> notBoughtEmails = customers.javaRDD()
.map(row -> row.getString(0))
.subtract(customersBoughtEmail).collect();
【问题讨论】:
标签: java sql apache-spark apache-spark-sql