0

我正在使用微软天蓝色 HDInsight。我有以下格式的数据。

容器/文件夹/年/月/日/file1.csv

容器/文件夹/年/月/日期/file2.csv 。. 。等等。

我使用以下查询创建了一个带有分区的外部表

'drop table partition;
CREATE EXTERNAL TABLE partition (id string, event timestamp and so on)
PARTITIONED BY (year INT, month INT, day INT)
ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe'
STORED AS TEXTFILE'

得到查询提交成功并创建外部表的输出。

然后给了Alter命令添加分区。

'ALTER TABLE partition ADD PARTITION(year=2014, month=1, day=1)
 LOCATION'wasb://$containerName@$storageAccountName.blob.core.windows.net/containerName/folderName/2014/01/01';'

即使在这里也没有得到任何错误。

然后,当我给出一个简单的选择语句时,我无法从数据文件中检索任何内容。

'select * from partition where year=2014 AND month=01 AND day=01 limit 10;'

也试过

'select * from partition limit 10;'

两个 select 语句都没有返回任何东西。无法弄清楚出了什么问题。请问有什么建议吗?

4

1 回答 1

0

如果您的数据文件存储在 Uri 的 blob 存储中,例如:

https://<account>.blob.core.windows.net/<container>/folderName/2014/01/01

那么你的 wasb: uri 需要是:

wasb://<container>@<account>.blob.core.windows.net/folderName/2014/01/01

或者,如果这是您的集群的默认存储帐户/容器,您可以使用:

wasb:///folderName/2014/01/01

ALTER TABLE wasb: above 中的额外containerName内容可能会通过指向实际上为空的路径而丢掉东西。

于 2014-05-05T15:21:35.743 回答