类 DefaultJsonHandler

Object
io.delta.kernel.defaults.engine.DefaultJsonHandler
所有已实现的接口:
JsonHandler

public class DefaultJsonHandler extends Object implements JsonHandler
基于 Hadoop API 的 JsonHandler 默认实现。
  • 构造器详细信息

    • DefaultJsonHandler

      public DefaultJsonHandler(FileIO fileIO)
  • 方法详情

    • parseJson

      public ColumnarBatch parseJson(ColumnVector jsonStringVector, StructType outputSchema, Optional<ColumnVector> selectionVector)
      描述从接口复制: JsonHandler
      解析给定的 json 字符串,并以 ColumnarBatch 中的列形式返回 outputSchema 请求的字段。

      对于特定的数据类型,应处理以下几种特殊情况

      • FloatType 和 DoubleType: 处理编码为字符串的非数字
        • NaN: "NaN"
        • 正无穷大: "+INF", "Infinity", "+Infinity"
        • 负无穷大: "-INF", "-Infinity""
      • DateType: 处理以 "yyyy-MM-dd" 格式编码为字符串的日期
      • TimestampType: 处理以 "yyyy-MM-dd'T'HH:mm:ss.SSSXXX" 格式编码为字符串的时间戳
      指定者
      接口中的 parseJson JsonHandler
      参数
      jsonStringVector - 有效 JSON 字符串的字符串 ColumnVector
      outputSchema - 从解析的 JSON 返回的数据的模式。如果 JSON 字符串中缺少任何请求的字段,则返回的 Row 中该特定字段将返回 null。每个给定字段的类型应与 JSON 中的类型匹配。
      selectionVector - 可选的选择向量,指示要解析 JSON 的行。如果存在,则只应解析选定的行。未选定的行在返回的批处理中应全部为 null。
      返回
      一个 ColumnarBatch,其模式为 outputSchema,其中 jsonStringVector 中的每个条目都有一行。
    • readJsonFiles

      public CloseableIterator<ColumnarBatch> readJsonFiles(CloseableIterator<FileStatus> scanFileIter, StructType physicalSchema, Optional<Predicate> predicate) throws IOException
      描述从接口复制: JsonHandler
      读取并解析给定位置的 JSON 格式文件,并以 ColumnarBatch 的形式返回数据,其中包含 physicalSchema 请求的列。
      指定者
      接口中的 readJsonFiles JsonHandler
      参数
      scanFileIter - 要从中读取数据的文件的迭代器。
      physicalSchema - 从 JSON 文件中读取的列的选择列表。
      predicate - 可选的谓词,JSON 读取器可以选择使用它来修剪不满足谓词的行。由于修剪是可选的且可能不完整,调用者仍有责任对此方法返回的数据应用谓词。
      返回
      一个 ColumnarBatch 的迭代器,其中包含列格式的数据。调用者有责任关闭迭代器。返回的数据与 scanFileIter 中给定的文件顺序相同。
      抛出
      IOException - 如果在读取过程中发生 I/O 错误。
    • writeJsonFileAtomically

      public void writeJsonFileAtomically(String filePath, CloseableIterator<Row> data, boolean overwrite) throws IOException
      利用 `delta-storage` 中的 LogStore 实现,根据目标文件系统原子性地将数据写入文件。
      指定者
      接口中的 writeJsonFileAtomically JsonHandler
      参数
      filePath - 目标文件路径
      data - 要写入的 JSON 数据
      overwrite - 如果为 true,则文件已存在时将被覆盖。如果为 false 且文件已存在,则抛出 FileAlreadyExistsException
      抛出
      IOException
      FileAlreadyExistsException - 如果文件已存在且 overwrite 为 false。