当前位置: 首页 > 知识库问答 >
问题:

用V1.11.0编写时,将拼花地板数据加载到雪花云数据库中的问题

南宫才英
2023-03-14

我对雪花是新手,但我的公司一直在成功地使用它。

目前正在使用Java parquet-avro V1.10.1使用现有的Avro模式编写Parquet文件。

我已经削减了Avro模式,并发现Avro模式中存在一个MAP类型是导致这个问题的原因。

田地是

    {
      "name": "FeatureAmounts",
      "type": {
        "type": "map",
        "values": "records.MoneyDecimal"
      }
    }

使用Parquet-Tools的Parquet模式示例。

message record.ResponseRecord {
  required binary GroupId (STRING);
  required int64 EntryTime (TIMESTAMP(MILLIS,true));
  required int64 HandlingDuration;
  required binary Id (STRING);
  optional binary ResponseId (STRING);
  required binary RequestId (STRING);
  optional fixed_len_byte_array(12) CostInUSD (DECIMAL(28,15));
  required group FeatureAmounts (MAP) {
    repeated group map (MAP_KEY_VALUE) {
      required binary key (STRING);
      required fixed_len_byte_array(12) value (DECIMAL(28,15));
    }
  }
}

感谢任何协助

共有1个答案

谭研
2023-03-14

逻辑类型Null不能应用于组节点

查找上面的错误,似乎正在使用Apache Arrow的parquet库的一个版本来读取该文件。

然而,仔细观察,真正的问题在于在基于Avro的Parquet Writer实现中使用遗留类型(以下假设使用Java编写文件)。

不幸的是,这是硬编码的行为,没有影响映射类型的配置选项可以帮助为Apache Arrow(扩展为Snowflake)生成正确的文件。在Apache Parquet开发人员发布适当的修复程序之前,您需要使用较旧版本的writer。

 类似资料:
  • 我使用的是spark 2.4.7和spark-snowflake 2.8.4,以及snowflake jdbc 3.12.17。我在Mac OS X Big Sur上。这发生在我升级到大苏尔之后,尽管我不确定这是否有关系。 我试过: 将bouncy castle提供程序作为包依赖项添加到我的配置中 检查是否指向Java 8(它确实指向) 重新安装java 8(使用homebrew和adoptope

  • 如何将数据帧中的数据写入到单个。拼花地板文件(两个数据 df.rdd.get1个分区 1个 如果我使用上述命令在HDFS中创建拼花文件,它将在HDFS中创建目录“payloads.parquet”,并在该目录中创建多个文件。拼花地板文件,元数据文件正在保存。 找到4项 如何将数据帧中的数据写入单个文件(两个数据 帮助将不胜感激。

  • 我如何一次加载5年的拼花数据并复制到一个表中?因为1个月的负荷比我1.5个小时,5年就要花我90个小时。如果有可能并行加载?我该怎么做呢? 谢谢

  • 有没有人知道这样的特性、可能性或变通方法?谢谢!

  • 关于雪花的新功能--推断模式表函数,我有一个问题。INFER模式函数在parquet文件上执行得很好,并返回正确的数据类型。但是,当parquet文件被分区并存储在S3中时,INFER模式的功能与pyspark Dataframes不同。 在DataFrames中,分区文件夹名称和值作为最后一列读取;在雪花推断模式中有没有一种方法可以达到同样的结果? 示例: 示例:{“AGMT_GID”:1714

  • 我试图将parquet数据从AWS S3阶段移动到Snowflake中的表中,并不断得到数据类型错误。具体地说,无论我如何调整列,这个错误总是弹出 无法识别数值“|” null 我的代码如下: