无法将azure Blob文件加载到HDINSIGHT中的配置单元表中
我是新的Hadoop,在将单个blob文件数据加载到配置单元表时,我陷入了一个基本问题。我正在基于文件名emp.dat创建表无法将azure Blob文件加载到HDINSIGHT中的配置单元表中,azure,hadoop,hive,hiveql,azure-hdinsight,Azure,Hadoop,Hive,Hiveql,Azure Hdinsight,我是新的Hadoop,在将单个blob文件数据加载到配置单元表时,我陷入了一个基本问题。我正在基于文件名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 LOCA
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
它在wasb url处抛出错误sytax
请在这个问题上帮助我。是否强制使用目录而不是文件名。是否可以通过只提供文件名来创建外部表
我的另一个条件是:如果我们给目录名,它包含两个不同模式的文件。。它如何将所有文件数据加载到表中
有没有办法从配置单元命令更改默认容器我认为以下方法应该有效(只要您在这个emp目录中有emp.dat)
是的,我终于找到了将文件数据加载到配置单元表的方法 将数据加载到路径'wasb:///tempdata/emp.dat'覆盖到表Employee中 这仅适用于默认容器,因为如果容器不同,即使它们属于同一存储帐户,URI的授权部分也不匹配。请参考以下网址
谢谢你,维克多。但我想提及的是地点'wasb://practice@XXXblobstore.blob.core.windows.net/user/emp/emp.dat.'而不是目录emp。这里emp/emp.dat不在默认目录中。Victor F提出的解决方案是正确的方法。在azure中,您需要将数据存储在容器中的文件夹中。开始创建多个表时,不建议将所有数据文件存储在默认文件夹中。
CREATE EXTERNAL TABLE Employee
(
ID INT,
Manager STRING,
Code INT,
Name STRING,
Year INT,
Month INT,
Salary DOUBLE,
Age INT
)
ROW FORMAT
DELIMITED
FIELDS TERMINATED BY '\t'
LOCATION 'wasb://practice@XXXblobstore.blob.core.windows.net/user/emp'
;