簡體   English   中英

如何為Redshift頻譜中的嵌套Parquet類型創建外部表

[英]How to create an external table for nested Parquet type in redshift spectrum

我知道redshift和redshift頻譜不支持嵌套類型,但是我想知道是否有任何技巧可以繞過該限制並使用Redshift Spectrum在S3中查詢嵌套數據? 在這篇文章中,這個家伙展示了我們如何對JSON文件執行此操作,但是對於Parquet則不同。 我們還有其他可用於Parquet文件的技巧嗎?

實際的架構是這樣的:(由AWS-Glue搜尋器提取)

CREATE EXTERNAL TABLE `parquet_nested`(
  `event_time` string, 
  `event_id` string, 
  `user` struct<ip_address:string,id:string,country:string>, 
  `device` struct<platform:string,device_id:string,user_agent:string>
  )
PARTITIONED BY ( 
  `partition_0` string, 
  `partition_1` string, 
  `partition_2` string, 
  `partition_3` string, 
  `partition_4` string)
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://...'

@ Am1rr3zA現在,RedShift頻譜支持查詢嵌套數據集。 它不僅支持JSON,還支持諸如木地板,獸人之類的壓縮格式。 這是來自AWS參考樣本

我在s3存儲桶中創建了指向鑲木地板文件的外部表。 因此有可能。

試試這個腳本

CREATE EXTERNAL TABLE spectrum.parquet_nested (
   event_time varchar(20),
   event_id varchar(20),
   user 
 struct<ip_address:varchar(20),id:varchar(20),country:varchar(20)>,
   device 
 struct<platform:varchar(20),device_id:varchar(20),user_agent:varchar(20)>
    )
    STORED AS PARQUET
    LOCATION 's3://BUCKETNAME/parquetFolder/';

希望這可以節省您的招數冒險:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM