无法在从hdfs读取csv的配置单元中创建表

icnyk63a  于 2021-06-02  发布在  Hadoop
关注(0)|答案(4)|浏览(434)

通过从hdfs读取.csv文件在配置单元中创建表时出现问题。查询如下:

CREATE EXTERNAL TABLE testmail (memberId String , email String, sentdate String,actiontype String, actiondate String, campaignid String,campaignname String)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' 
LOCATION '/user/hadoop/cloudera/ameeth/ca_email.csv';

获取时出错。元数据错误:
元异常(message:hdfs://pc:8020/user/hadoop/cloudera/ameeth/ca\u email.csv不是目录或无法创建目录)
有人能帮我吗。实际上,我想在.sql文件中运行这样的语句作为作业

w8rqjzmb

w8rqjzmb1#

在hdfs上创建一个目录,并将您的ca\u email.csv移到其中,然后将该目录指定为create external table命令的位置。

x0fgdtte

x0fgdtte2#

走这条路
在cloudera中找到metastore\u db文件夹并删除*.lck文件
命令sudo rm/folder\u path/metastore\u db/*.lck

9rygscc1

9rygscc13#

配置单元将拾取您在位置中指定的目录中的所有文件。您不需要指定文件名。
这应该起作用:

CREATE EXTERNAL TABLE testmail (memberId String , email String, sentdate String,actiontype String, actiondate String, campaignid String,campaignname String) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' LOCATION '/user/hadoop/cloudera/ameeth';
hzbexzde

hzbexzde4#

我也有同样的问题。
我将csv文件更改为制表符分隔的文本文件,将该文件移动到hdfs,并通过加载相同的结果来创建hive表。
您可以在hdfs中查看该文件,以确保已按预期将数据按选项卡分隔并加载到配置单元表中

CREATE TABLE TABLE1
( 
     column1 string,
     column2 string,
     ....
     ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';
)LOAD DATA INPATH <hdfs location of tab delimited txt file> OVERWRITE INTO TABLE TABLE1

相关问题