美元符号使用Spark SQL在Java中调用函数

Vit*_*mud 12 java scala apache-spark apache-spark-sql

我有以下代码(Java与Spark SQL) -

    import static org.apache.spark.sql.functions.col;
    ...

    System.out.println("=== Filtering records with average age more than 20 ===");
    Dataset<Row> result = df.filter(col("age").$less(20));
Run Code Online (Sandbox Code Playgroud)

我从来没有遇到过以美元开头的Java函数调用.尝试谷歌搜索它,但我到目前为止最好的猜测是,它是Java调用Scala代码的结果(但在Scala源代码中没有$ less函数)

能否为此提供一个可靠的解释?

Mah*_*afy 2

因为 Scala\xe2\x80\x99s 方法语法中每个允许的符号都有一个相应的翻译,形式为 \xe2\x80\x9c$trans\xe2\x80\x9c。所以对于你的问题,scala中有一个方法被调用<,java中相应的方法将是$less

\n\n

其他运算符将被编译为:

\n\n
\xe2\x95\x94\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xa6\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x97\n\xe2\x95\x91 Scala Operator    \xe2\x95\x91 Compiles To  \xe2\x95\x91\n\xe2\x95\xa0\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xac\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xa3\n\xe2\x95\x91=                  \xe2\x95\x91$eq           \xe2\x95\x91\n\xe2\x95\x91>                  \xe2\x95\x91$greater      \xe2\x95\x91\n\xe2\x95\x91<                  \xe2\x95\x91$less         \xe2\x95\x91\n\xe2\x95\x91+                  \xe2\x95\x91$plus         \xe2\x95\x91\n\xe2\x95\x91-                  \xe2\x95\x91$minus        \xe2\x95\x91\n\xe2\x95\x91*                  \xe2\x95\x91$times        \xe2\x95\x91\n\xe2\x95\x91/                  \xe2\x95\x91$div          \xe2\x95\x91\n\xe2\x95\x91!                  \xe2\x95\x91$bang         \xe2\x95\x91\n\xe2\x95\x91@                  \xe2\x95\x91$at           \xe2\x95\x91\n\xe2\x95\x91#                  \xe2\x95\x91$hash         \xe2\x95\x91\n\xe2\x95\x91%                  \xe2\x95\x91$percent      \xe2\x95\x91\n\xe2\x95\x91^                  \xe2\x95\x91$up           \xe2\x95\x91\n\xe2\x95\x91&                  \xe2\x95\x91$amp          \xe2\x95\x91\n\xe2\x95\x91~                  \xe2\x95\x91$tilde        \xe2\x95\x91\n\xe2\x95\x91?                  \xe2\x95\x91$qmark        \xe2\x95\x91\n\xe2\x95\x91\xe2\x95\x91                  \xe2\x95\x91$bar          \xe2\x95\x91\n\xe2\x95\x91\\                  \xe2\x95\x91$bslash       \xe2\x95\x91\n\xe2\x95\x91:                  \xe2\x95\x91$colon        \xe2\x95\x91\n\xe2\x95\x9a\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xa9\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x9d\n
Run Code Online (Sandbox Code Playgroud)\n\n

有关此的更多信息可以在这里找到:\n http://www.codecommit.com/blog/java/interop- Between-java-and-scala

\n