Java 如何在spark中处理这种情况?
我正在使用spark-sql-2.4.1v和Java1.8。 我有两个数据集Java 如何在spark中处理这种情况?,java,apache-spark,apache-spark-sql,Java,Apache Spark,Apache Spark Sql,我正在使用spark-sql-2.4.1v和Java1.8。 我有两个数据集 Dataset<Company> firstDataset = //get/read data from oracle company table. Dataset<CompanyTransaction> secondDataset = //get/read data from oracle company_transaction table. Dataset firstDataset=/
Dataset<Company> firstDataset = //get/read data from oracle company table.
Dataset<CompanyTransaction> secondDataset = //get/read data from oracle company_transaction table.
Dataset firstDataset=//从oracle公司表获取/读取数据。
Dataset secondDataset=//从oracle公司事务表获取/读取数据。
Company
有类似于“companyId”、“companyName”、“companyRegion”、“column4”、“column5”等列
CompanyTransaction
有类似于“companyId”、“transactionId”、“transactionType”、“column4”、“column5”等列
对于firstDataset中的每个companyId,我需要从CompanyTransaction中获取各自的companyId数据
如何使用spark实现这一点?基于公司id连接两个数据集,并从第二个数据集中选择所有列。代码应该如下所示:(未测试)
Dataset finalDf=firstDataset.join(secondDataset
,firstDataset.col(“companyId”).equalTo(secondDataset.col(“companyId”),
“内部”).select(secondDataset.col(“*))
finalDF.show()
您尝试了什么?请使用回答中的Dataset.join
运算符。还有什么要回答的吗?如果您有一个复合键,它应该包含在join列中。如果您特别想执行每个操作,请探索“Mappartition”“在斯巴克塔斯,这是正确的。但这是我们可以从我们这边强制执行的唯一优化执行方式。因为计算将进入每个部分
Dataset<Row> finalDf = firstDataset.join(secondDataset
,firstDataset.col("companyId").equalTo(secondDataset.col("companyid"),
"inner").select(secondDataset .col("*))
finalDF.show()