【问题标题】:Select data from two locations从两个位置选择数据
【发布时间】:2019-07-17 02:51:16
【问题描述】:

我需要在 S3 上使用 Redshift Spectrum 获取数据。 但是,我需要使用两个不同的文件夹(2018 / 2019)。如何在“位置”部分同时使用?

现在我有:

create external table test_spectrum.full_events_test2
(
    timestamp bigint,
    device struct<locale:struct<country:varchar, language:varchar>, platform:struct<name:varchar>>,
)
row format serde 'org.openx.data.jsonserde.JsonSerDe'
with serdeproperties('ignore.malformed.json'='true', 'paths'='event_type', 'serialization.format'='1')
stored as
inputformat 'org.apache.hadoop.mapred.TextInputFormat'
outputformat 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
location 's3://myfolder/2019/'  -- But I want also 's3://myfolder/2018/'

但是,我也想要 's3://myfolder/2018/'

我该怎么办?

【问题讨论】:

  • 使用location 's3://myfolder/——它将包括myfolder下的所有文件夹。
  • 我知道,但是 /myfolder/ 中有一些文件我需要忽略。所以,我不能这样做
  • 重新排列您的 s3 数据,以便您拥有一个文件夹,其中所有子文件夹都包含可以组成表格的相似数据。

标签: amazon-web-services amazon-redshift amazon-redshift-spectrum


【解决方案1】:

如果您希望 Amazon Redshift Spectrum 扫描多个文件夹,它们必须有一个共同的前缀。

无法指定多个单独的文件夹作为位置。

因此,您应该将这些文件夹移动到一个公用文件夹下,该公用文件夹中没有其他文件。

【讨论】:

  • 感谢您明确表示,除了为所有文件建立一个公共文件夹之外,别无他法 :)
猜你喜欢
  • 1970-01-01
  • 2017-02-08
  • 1970-01-01
  • 2022-07-06
  • 2012-11-18
  • 2012-12-16
  • 2012-09-13
  • 1970-01-01
  • 2018-02-11
相关资源
最近更新 更多