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

将雪花表卸载到镶木地板s3时保留模式

仉宪
2023-03-14

我的Snowflake表包含一个创建为int的字段,默认为number(38,0)作为Snowflake数据类型。

当我用COPY命令将这个表以parquet格式卸载到s3时,我希望保留整个模式,包括这个字段的精度。但是,生成的parquet具有int32小数(精度=9,标度=0)

COPY INTO @staging.dl_stage/prediction/vehicle/export_date=20200226/file 
FROM (
    SELECT * FROM  snd_staging.PREDICTION.vehicle
)
  FILE_FORMAT=(type='parquet' COMPRESSION = AUTO)
  HEADER = TRUE
  OVERWRITE = TRUE
  SINGLE = False
  MAX_FILE_SIZE=256000000;

是否可以强制保持雪花数据类型精度不变?

共有1个答案

谯阳伯
2023-03-14

我最终通过运行以下内容解决了这个问题:

alter session set ENABLE_UNLOAD_PHYSICAL_TYPE_OPTIMIZATION = false; 
 类似资料:
  • 我有一个avro格式的数据流(json编码),需要存储为镶木地板文件。我只能这样做, 把df写成拼花地板。 这里的模式是从json中推断出来的。但是我已经有了avsc文件,我不希望spark从json中推断出模式。 以上述方式,parquet文件将模式信息存储为StructType,而不是avro.record.type。是否也有存储avro模式信息的方法。 火花 - 1.4.1

  • 有没有一种方法可以直接从基于avro模式的parquet文件在Amazon Athena中创建表?模式被编码到文件中,所以我需要自己实际创建DDL看起来很愚蠢。 我看到了这个,还有另一个复制品 但它们与Hive直接相关,这对雅典娜不起作用。理想情况下,我正在寻找一种以编程方式执行此操作的方法,而无需在控制台上定义它。

  • 现在Spark 2.4已经内置了对Avro格式的支持,我正在考虑将数据湖中某些数据集的格式从Parquet更改为Avro,这些数据集通常是针对整行而不是特定列聚合进行查询/联接的。 然而,数据之上的大部分工作都是通过Spark完成的,据我所知,Spark的内存缓存和计算是在列格式的数据上完成的。在这方面,Parquet是否提供了性能提升,而Avro是否会招致某种数据“转换”损失?在这方面,我还需要

  • 有一个AWS胶水爬虫,它正在创建一个包含拼花文件的S3目录中所有表的数据目录。 我需要将这些文件/表的内容复制到Redshift表。我有几个表,Redshift无法支持Parket文件数据大小。是不够的。 在理想情况下,希望截断这些表。 如何使用COPY命令将此数据加载到红移中?如果我使用spectrum,我只能使用户从外部表插入到红移表,我知道这比批量复制慢?

  • 我使用 docker compose 来启动 3 个服务:zookeeper、kafka broker 和 minio-connector 当我在 minio-connector 中使用以下配置从 kafka 消费并将 JSON 格式的记录转储到 minio 时,这三个服务可以成功启动和连接: 启动命令: <代码>root@e1d1294c6fe6:/opt/bitnami/kafka/bin#.

  • 我的 hdfs 中有 Parquet 文件。我想将这些镶木地板文件转换为csv格式