Nei*_*gan 6 apache-spark-sql pyspark
这有效:
from pyspark.sql import SparkSession
from pyspark.sql.functions import pandas_udf
import pandas as pd
spark = SparkSession.builder.getOrCreate()
@pandas_udf(returnType="long")
def add_one(v: pd.Series) -> pd.Series:
return v.add(1)
spark.udf.register("add_one", add_one)
spark.sql("select add_one(1)").show()
Run Code Online (Sandbox Code Playgroud)
但是,我想知道是否/如何进行以下工作:
$ spark-sql -e 'select add_one(1)'
Run Code Online (Sandbox Code Playgroud)
如果有人能使用它那就太好了。
恐怕目前这是不可能的。有趣的是,实际上没有人提到它。
这些信息实际上“隐藏”在 apache Spark 文档的一个小注释中:
请注意,Spark SQL CLI 无法与 Thrift JDBC 服务器通信。
正如您可能了解的含义,这意味着您无法UDFs从 CLI调用spark-sql。这是文档的链接。
可以仔细检查bin/spark-sql github 上的源代码,实际做了什么:
if [ -z "${SPARK_HOME}" ]; then
source "$(dirname "$0")"/find-spark-home
fi
export _SPARK_CMD_USAGE="Usage: ./bin/spark-sql [options] [cli option]"
exec "${SPARK_HOME}"/bin/spark-submit --class org.apache.spark.sql.hive.thriftserver.SparkSQLCLIDriver "$@"
Run Code Online (Sandbox Code Playgroud)
当它提交给 时thriftserver,这再次确认您不能使用UDFat spark-sqlCLI。
| 归档时间: |
|
| 查看次数: |
978 次 |
| 最近记录: |