我正在尝试自学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.这是不正确的。有人可以让我知道我在这里做错了什么。
干杯
答案 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';
,并且能够在此之后对数据进行选择。