我是新的hadoop,我陷入了一个基本的问题:只将单个blob文件数据加载到hive表中。我正在基于文件名emp.dat创建表。
CREATE EXTERNAL TABLE Employee(ID int, manager string,Code int,Name string, Year int, Month int, Salary int,Age int) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' STORED AS TEXTFILE LOCATION 'wasb://practice@XXXblobstore.blob.core.windows.net/emp.dat/'
当我执行上述命令时,我得到以下错误:
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask.
MetaException(message:Got exception: java.io.IOException
Cannot create directory wasb://practice@XXXblobstore.blob.core.windows.net/emp.dat/
我还尝试了一种不同的方法来创建没有任何wasb位置的表。然后,运行以下命令:
LOAD data inpath 'wasb://practice@XXXblobstore.blob.core.windows.net/emp.dat/' overwrite into table Employee
它在wasburl抛出错误sytax。
在这个问题上请帮助我。是强制使用目录而不是文件名。是否可以通过只提供文件名来创建外部表。
我的另一个条件是:如果我们给目录名,它包含两个不同模式的文件。。它如何将所有文件数据加载到表中。
有没有办法从配置单元命令更改默认容器
2条答案
按热度按时间ecfsfe2w1#
我认为下面的方法应该有效(只要您在这个emp目录中有emp.dat)
wxclj1h52#
是的,我终于找到了一种方法将文件数据加载到配置单元表load data inpath'wasb:///tempdata/emp.dat'overwrite into table employee;
这只适用于默认容器,因为如果容器不同(即使它们属于同一存储帐户),uri的授权部分也不匹配。请参考以下网址
https://social.msdn.microsoft.com/forums/azure/en-us/22cf9a71-cce7-4765-a78e-2dc569d69a8a/hive-path-is-not-legal-azure-storage?forum=hdinsight