使用分区的雪花到 Hive 数据移动
Posted
技术标签:
【中文标题】使用分区的雪花到 Hive 数据移动【英文标题】:Snowflake to Hive data movement with partition 【发布时间】:2021-02-07 19:00:46 【问题描述】:我们需要将数据从 Snowflake 移动到 Hive。我能够将数据从雪花卸载到 aws S3,并在 Hive 上进行 msck 修复。 但是所有记录在 Hive 中都是空的。可能是什么原因 ?这里有什么问题吗。 为了检查 parquet 是否正确创建,我使用 Spark 读取 Parquet 文件。我能够读取镶木地板文件。
##雪花 创建或替换阶段 dev_zone.DAILY_LOG url='s3://myc-mlb-alpha-us-east-1-drg-322t232/hive/rs_hive_008_test1' storage_integration = DEV_HIVE_INTEGRATION file_format = (type = 'parquet') ENCRYPTION = (TYPE = 'AWS_SSE_S3');
copy into @dev_zone.DAILY_LOG from (select * from dev_zone.DAILY_LOG limit 100) partition by ('as_on_date=' ||as_on_date);
##Hive
CREATE EXTERNAL TABLE dev_zone.DAILY_LOG(
dim_id decimal(38,0),
card_type string,
type string,
cntry string,
PARTITIONED BY (
as_on_date date)
ROW FORMAT SERDE
'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe'
STORED AS INPUTFORMAT
'org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat'
OUTPUTFORMAT
'org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat'
LOCATION
's3://myc-mlb-alpha-us-east-1-drg-322t232/hive/rs_hive_008_test1'
【问题讨论】:
【参考方案1】:我错过的是添加 header = true
copy into @dev_zone.DAILY_LOG from (select * from dev_zone.DAILY_LOG limit 100) partition by ('as_on_date=' ||as_on_date) header = true;
【讨论】:
仅出于我自己的兴趣,您将数据从 Snowflake 移出并移入 Hive 的用例是什么? @NickW ,企业也希望将数据保留在 Hive 中。经过三个月的业务,他们想从 Snowflake 托管表中删除数据。一旦我们转移到 hive,这些数据可以作为 Snowflake 外部表访问(对于关键业务用户),对于其他人,他们可以通过 Hive 访问 - (Hive 在 EMR 上运行)因此除了读取 s3 存储桶之外,在 hive 上进行处理没有额外成本。希望我能回答你的问题。以上是关于使用分区的雪花到 Hive 数据移动的主要内容,如果未能解决你的问题,请参考以下文章
雪花 - Azure 文件上传 - 如果文件大小超过 40MB,我如何对文件进行分区