pyspark

pyspark 的相关函数

PySpark SQL provides several built-in standard functions pyspark.sql.functions to work with DataFrame and SQL queries. All these PySpark Functions return pyspark.sql.Column type.

get_json_object
复制代码
  /**
   * Extracts json object from a json string based on json path specified, and returns json string
   * of the extracted json object. It will return null if the input json string is invalid.
   *
   * @group json_funcs
   * @since 1.6.0
   */
  def get_json_object(e: Column, path: String): Column =
    Column.fn("get_json_object", e, lit(path))

以下可以看出 python 的函数实现,复用的是jvm 的那套实现

复制代码
@_try_remote_functions
def get_json_object(col: "ColumnOrName", path: str) -> Column:
    """
    Extracts json object from a json string based on json `path` specified, and returns json string
    of the extracted json object. It will return null if the input json string is invalid.

    .. versionadded:: 1.6.0

    .. versionchanged:: 3.4.0
        Supports Spark Connect.

    Parameters
    ----------
    col : :class:`~pyspark.sql.Column` or str
        string column in json format
    path : str
        path to the json object to extract

    Returns
    -------
    :class:`~pyspark.sql.Column`
        string representation of given JSON object value.

    Examples
    --------
    >>> data = [("1", '''{"f1": "value1", "f2": "value2"}'''), ("2", '''{"f1": "value12"}''')]
    >>> df = spark.createDataFrame(data, ("key", "jstring"))
    >>> df.select(df.key, get_json_object(df.jstring, '$.f1').alias("c0"), \\
    ...                   get_json_object(df.jstring, '$.f2').alias("c1") ).collect()
    [Row(key='1', c0='value1', c1='value2'), Row(key='2', c0='value12', c1=None)]
    """
    from pyspark.sql.classic.column import _to_java_column

    return _invoke_function("get_json_object", _to_java_column(col), path)


   def _invoke_function(name: str, *args: Any) -> Column:
    """
    Invokes JVM function identified by name with args
    and wraps the result with :class:`~pyspark.sql.Column`.
    """
    from pyspark import SparkContext

    assert SparkContext._active_spark_context is not None
    jf = _get_jvm_function(name, SparkContext._active_spark_context)
    return Column(jf(*args))

def _get_jvm_function(name: str, sc: "SparkContext") -> Callable:
    """
    Retrieves JVM function identified by name from
    Java gateway associated with sc.
    """
    assert sc._jvm is not None
    return getattr(getattr(sc._jvm, "org.apache.spark.sql.functions"), name)

def _to_java_column(col: "ColumnOrName") -> "JavaObject":
    if isinstance(col, Column):
        jcol = col._jc
    elif isinstance(col, str):
        jcol = _create_column_from_name(col)
    else:
        raise PySparkTypeError(
            error_class="NOT_COLUMN_OR_STR",
            message_parameters={"arg_name": "col", "arg_type": type(col).__name__},
        )
    return jcol

FQA

复制代码
ModuleNotFoundError: No module named 'numpy'

遇到该问题, 先看看 pyspark 使用的 python 版本

复制代码
Welcome to
      ____              __
     / __/__  ___ _____/ /__
    _\ \/ _ \/ _ `/ __/  '_/
   /__ / .__/\_,_/_/ /_/\_\   version 3.3.2
      /_/

Using Python version 3.9.9 (main, Mar  3 2024 19:54:45)
Spark context Web UI available at http://172.17.48.107:4040
Spark context available as 'sc' (master = local[10], app id = local-1719386128955).
SparkSession available as 'spark'.

然后使用响应的 python 版本 pip去安装 numpy, 否则安装了也 识别不了

复制代码
pip3.9 install numpy
相关推荐
明天好,会的1 天前
从Spark/Flink到WASM:流式处理框架的演进与未来展望
flink·spark·wasm
IvanCodes3 天前
三、Spark 运行环境部署:全面掌握四种核心模式
大数据·分布式·spark
喻师傅4 天前
SparkSQL 子查询 IN/NOT IN 对 NULL 值的处理
大数据·spark
星星妳睡了吗5 天前
Spark DataFrame与数据源交互
大数据·分布式·spark
神仙别闹5 天前
基于Spark图计算的社会网络分析系统
大数据·分布式·spark
IvanCodes5 天前
二、Spark 开发环境搭建 IDEA + Maven 及 WordCount 案例实战
大数据·spark·scala
涤生大数据5 天前
从8h到40min的极致并行优化:Spark小数据集UDTF处理的深度实践与原理剖析
大数据·分布式·spark·涤生大数据
qq_463944866 天前
【Spark征服之路-3.7-Spark-SQL核心编程(六)】
sql·ajax·spark
青云交7 天前
Java 大视界 -- 基于 Java 的大数据分布式计算在地球物理勘探数据处理与地质结构建模中的应用(356)
java·大数据·spark·地质建模·分布式计算·地球物理勘探·地震数据处理
qq_463944867 天前
【Spark征服之路-3.6-Spark-SQL核心编程(五)】
sql·ajax·spark