Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将csv文件与配置单元中的表联接_Java_Apache Spark_Apache Spark Sql - Fatal编程技术网

Java 如何将csv文件与配置单元中的表联接

Java 如何将csv文件与配置单元中的表联接,java,apache-spark,apache-spark-sql,Java,Apache Spark,Apache Spark Sql,spark中的连接有问题。我已经从一些CSV加载了数据,我想将它们连接到配置单元中的一个表中 我试着根据文档做这件事,但没有成功 我将表格定义为 Dataset<Row> table = SparkSession.sql(query); 你应该试试看 data.joinWith(table, data.col("id1").equalTo(table.col("id2"), "left") 参考: 编辑: 使用left_outer代替left,left不是joinType,lef

spark中的
连接有问题。我已经从一些CSV加载了数据,我想将它们连接到配置单元中的一个表中

我试着根据文档做这件事,但没有成功

我将表格定义为

Dataset<Row> table = SparkSession.sql(query);

你应该试试看

data.joinWith(table, data.col("id1").equalTo(table.col("id2"), "left")
参考:

编辑:

使用left_outer代替left,left不是joinType,left JOIN和left outer JOIN之间绝对没有区别

data.join(table, data.col("id1").equalTo(table.col("id2")), "left_outer")
参考:

加入
公共数据集联接(数据集右侧,
scala.collection.Seq使用列,
字符串(类型)
使用给定的列与另一个数据帧进行相等连接。
与其他连接函数不同,连接列在输出中只出现一次,即类似于使用语法的SQL连接。
参数:
右-联接操作的右侧。
usingColumns—要联接的列的名称。此列必须位于两侧。
joinType-其中一种:内部、外部、左外、右外、左半。

您应该尝试与

data.joinWith(table, data.col("id1").equalTo(table.col("id2"), "left")
参考:

编辑:

使用left_outer代替left,left不是joinType,left JOIN和left outer JOIN之间绝对没有区别

data.join(table, data.col("id1").equalTo(table.col("id2")), "left_outer")
参考:

加入
公共数据集联接(数据集右侧,
scala.collection.Seq使用列,
字符串(类型)
使用给定的列与另一个数据帧进行相等连接。
与其他连接函数不同,连接列在输出中只出现一次,即类似于使用语法的SQL连接。
参数:
右-联接操作的右侧。
usingColumns—要联接的列的名称。此列必须位于两侧。
joinType-其中一种:内部、外部、左外、右外、左半。

好的,我得到了答案。问题在于模式,当您想在spark中使用csv时,您需要定义模式,当您加入一个表时,您需要在您加入的模式键中定义,即使您不想将此字段保存为输出,否则它将无法工作。

好的,我得到了一个答案。问题在于模式,当您想在spark中使用csv时,需要定义模式,当您加入一个表时,您需要在模式键中定义您已经加入的键,即使您不想将此字段保存为输出,否则它将不起作用

,如果您以这种方式加入,结果会是什么?您可以从两个数据集发布
printSchema
?如果您以这种方式加入,结果会是什么?您可以发布吗
printSchema
来自两个数据集?我不能使用joinWith,因为它将类型更改为
Dataset
,并且我需要使用类型
Dataset
而不是左使用joinType-其中一个:内部、外部、左外、右外、左半。ref:参数:右侧-联接操作的右侧。usingColumns—要联接的列的名称。此列必须位于两侧。joinType-其中一个:内部、外部、左外部、右外部、左半。我不能使用joinWith,因为它将类型更改为
Dataset
,我需要使用类型
Dataset
,而不是左使用joinType-其中一个:内部、外部、左外部、右外部、左半。ref:参数:右侧-联接操作的右侧。usingColumns—要联接的列的名称。此列必须位于两侧。joinType-其中一种:内部、外部、左外部、右外部、左半。您可以按代码行添加解决方案并接受它吗?您可以按代码行添加解决方案并接受它吗
join

public Dataset<Row> join(Dataset<?> right,
                scala.collection.Seq<String> usingColumns,
                String joinType)
Equi-join with another DataFrame using the given columns.
Different from other join functions, the join columns will only appear once in the output, i.e. similar to SQL's JOIN USING syntax.

Parameters:
right - Right side of the join operation.
usingColumns - Names of the columns to join on. This columns must exist on both sides.
joinType - One of: inner, outer, left_outer, right_outer, leftsemi.