我是新的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/
我还尝试了一种不同的方法来创建没有任何isb位置的表。然后,运行以下命令:
LOAD data inpath 'wasb://practice@XXXblobstore.blob.core.windows.net/emp.dat/' overwrite into table Employee
它会在wasb url处抛出错误的sytax错误。
请帮我解决这个问题。是否强制使用目录而不是文件名。是否可以通过仅提供文件名来创建外部表。
我的另一个条件是:如果我们提供目录名称并且它包含2个不同模式的文件..它如何将所有文件数据加载到表中。
是否可以从hive命令更改默认容器
答案 0 :(得分:1)
我认为以下应该可以工作(只要你在这个emp目录中有emp.dat)
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'
;
答案 1 :(得分:0)
是的,我终于找到了将文件数据加载到hive表的方法 LOAD DATA INPATH'wasb:///tempdata/emp.dat'OVERWRITE INTO Employee;
这仅适用于Default容器,因为如果容器不同,即使它们属于同一存储帐户,URI的权限部分也不匹配。请参阅以下网址