在原始数据上创建Hive架构不能按预期工作

时间:2014-11-13 11:29:01

标签: azure hive blob hdfs hdinsight

我正在尝试自学HIVE并使用教程From Raw Data to Insight using HDP and Microsoft Business Intelligence

熟悉MicrsoftAzure上的HDInsight和HDFS

我已设法在HDFS上暂存数据,现在使用AzurePowershell和Microsoft Azure HDInsight查询控制台在原始数据上创建Hive架构。

我正在尝试使用下面的DDL语句创建表'price_data':

create external table price_data (stock_exchange string, symbol string, trade_date string, open float, high float, low float, close float, volume int, adj_close float) 
row format delimited 
fields terminated by ',' 
stored as textfile 
location '/nyse/nyse_prices';

blob文件位于容器“nyse”中,容器中的每个blob文件名为“nyse_prices / NYSE_daily_prices_.csv”。

我确保格式符合MSDN上的Processing data with Hive文档。

当我运行上面的查询时,它会成功执行并创建表。

外部表指向底层文件,因此应填充每个csv文件中的数据。

但是,当我运行查询时:

select count(*) from price_data 

它返回0.这是不正确的。有人可以让我知道我在这里做错了什么。

干杯

1 个答案:

答案 0 :(得分:1)

我认为您指定的位置可能不正确。

您有一个默认容器,它是您在创建HDInsight容器时指定或创建的容器。例如,' mycontainer'。如果我将所有csv文件放在该容器中作为nyse_prices / filename.csv,那么我的位置将只是' / nyse_prices'。只是包含文件的目录。容器'在这种情况下被视为根 - ' /'。

如果文件不在默认容器中,或者在其他存储帐户中,则可以使用' wasb://container@storagename.blob.core.windows.net/nyse_prices'

作为测试,我刚刚在我的默认容器上创建了nyse_prices /并将一些csv上传到了它。然后修改了您的查询以使用location '/nyse_prices';,并且能够在此之后对数据进行选择。