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 Spark:动态构造连接表达式_Java_Apache Spark - Fatal编程技术网

Java Spark:动态构造连接表达式

Java Spark:动态构造连接表达式,java,apache-spark,Java,Apache Spark,我必须使用连接表达式连接两个数据集: ds1.join(ds2, joinExpr) joinExpr例如可以是ds1.col(price).equals(ds2.price) 但我必须使用外部属性文件动态外部化联接列: -price -name -adress ... 是否可以动态构造此表达式?您可以使用asjoinExpr。字符串参数可以是任何可以从配置文件加载或构造的有效SQL表达式 import static org.apache.spark.sql.functions.*; //构

我必须使用连接表达式连接两个数据集:

ds1.join(ds2, joinExpr)
joinExpr
例如可以是
ds1.col(price).equals(ds2.price)

但我必须使用外部属性文件动态外部化联接列:

-price
-name
-adress
...
是否可以动态构造此表达式?

您可以使用as
joinExpr
。字符串参数可以是任何可以从配置文件加载或构造的有效SQL表达式

import static org.apache.spark.sql.functions.*;
//构造测试数据
df1=。。。
//+---+---+
//|a | b|
//+---+---+
//|  1|  2|
//|  3|  4|
//+---+---+
df2=。。。
//+---+---+
//|c|d|
//+---+---+
//|  1|  1|
//|  3|  5|
//+---+---+
//定义联接条件。它可以从文件中加载
String joinCondition=“a=c,b>d”;
join(df2,expr(joinCondition)).show();
//+---+---+---+---+                                                               
//|a | b | c | d|
//+---+---+---+---+
//|  1|  2|  1|  1|
//+---+---+---+---+