Spark SIMD JSON使用说明

使用Spark SIMD(全称Single Instruction Multiple Data,单指令多数据流)JSON,可以比Spark原生JSON解析更快。本文为您介绍如何开启Spark SIMD JSON,以及使用示例。

开启Spark SIMD JSON

您可以在E-MapReduce开启Spark SIMD JSON。

针对SparkThriftServer

  1. 进入集群服务页面。

    1. 登录EMR on ECS控制台

    2. 在顶部菜单栏处,根据实际情况选择地域和资源组

    3. EMR on ECS页面,单击目标集群操作列的集群服务

  2. 新增配置项。

    1. 集群服务页面,单击Spark3服务区域的配置

      本文以Spark3服务为例。

    2. 单击spark-thriftserver.conf页签。

    3. 单击新增配置项

    4. 输入Keyspark.sql.simd.json.enabledValuetrue的配置项。

    5. 单击确定

    6. 在弹出的对话中,输入执行原因,单击保存

  3. 重启SparkThriftServer。

    1. 集群服务页面,单击状态页签。

    2. 组件列表区域,单击SparkThriftServer操作列的重启

    3. 在弹出的对话中,输入执行原因,单击确定

    4. 确认对话中,单击确定

针对Spark任务

在启动Spark任务时,加上以下参数。

spark.sql.simd.json.enabled=true

支持函数

支持以下函数,使用方法与原生Spark一致。

  • get_json_object(expr, path)

    示例如下。

    SELECT get_json_object('{"a":"b"}', '$.a');
    b
  • json_tuple(jsonStr, path1 [, ...] )

    示例如下。

    SELECT json_tuple('{"a":1, "b":2}', 'a', 'b'), 'Spark';
    1 2 Spark
    SELECT json_tuple('{"a":1, "b":2}', 'a', 'c'), 'Hive';
    1 NULL Hive