无法将azure blob文件加载到hdinsight中的配置单元表中

8oomwypt  于 2021-06-03  发布在  Hadoop
关注(0)|答案(2)|浏览(297)

我是新的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。
在这个问题上请帮助我。是强制使用目录而不是文件名。是否可以通过只提供文件名来创建外部表。
我的另一个条件是:如果我们给目录名,它包含两个不同模式的文件。。它如何将所有文件数据加载到表中。
有没有办法从配置单元命令更改默认容器

ecfsfe2w

ecfsfe2w1#

我认为下面的方法应该有效(只要您在这个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'
;
wxclj1h5

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

相关问题