使用 HUE 创建 Hive table
Creating Hive table using HUE
我安装了一个单节点的Cloudera来开始学习这项技术。现在,我正在尝试通过 CSV 文件在 HUE 上创建 table。
当我尝试这样做时,正在创建 table 但没有任何数据,只有列结构,我收到以下错误:
Error while compiling statement: FAILED: SemanticException Line 1:17
Invalid path ''/user/josholsan/ic_data/_glucosa.csv'': No files
matching path
hdfs://server_name:8020/user/josholsan/ic_data/_glucosa.csv
错误说没有匹配此路径的文件,但是当我在终端中尝试以下操作时,文件就在那里:
hadoop fs -ls hdfs//server_name.8020/user/josholsan/ic_data/_glucosa.csv
HUE 正在执行以创建 table 的代码如下:
CREATE TABLE `test`.`cpk`
(
`id` bigint ,
`numsipcod` string ,
`valor` bigint ,
`fecharegistro` string ) ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde'
WITH SERDEPROPERTIES ("separatorChar" = "\t",
"quoteChar" = "\"",
"escapeChar" = "\"
)
STORED AS TextFile TBLPROPERTIES("skip.header.line.count" = "1")
;
LOAD DATA INPATH '/user/josholsan/ic_data/_glucosa.csv' INTO TABLE `test`.`glucosa`;
我还尝试使用 LOAD DATA LOCAL INPATH 从本地加载文件。
我实际上不知道如何进行。我一直在上网查资料,但我发现的内容对我没有帮助。
当我在这行上面写命令时,有一些事情引起了我的注意,就是这个文件的权限,权限是:
- rw-r--r--
无论如何,我在 HDFS 设置中禁用了权限检查。
任何有 HDFS/HUE/Cloudera 知识的人都知道这可能是这里的问题所在?
非常感谢你 =)
TL;DR
重命名您的文件 -- 在 Hadoop 生态系统中,名称以点或下划线开头的数据文件通常 会被设计忽略。
来自which files ignored as input by mapper?
(... Hadoop source code excerpt...)
So if you use ... TextInputFormat
... the hidden files (the file
name starts with "_" or ".") will be ignored.
Hive TextFile
格式依赖于 MapReduce TextInputFormat
-- 因此所有带有前导点或前导下划线的文件都将被忽略;它们应该是信号量(例如 Pig 或 Spark 使用的 _SUCCESS
)或临时目录(例如 .impala_insert_staging/
)等。
此外,摘录自the Impala documentation:
The INSERT statement has always left behind a hidden work directory
inside the data directory of the table. Formerly, this hidden work
directory was named .impala_insert_staging
. In Impala 2.0.1 and
later, this directory name is changed to _impala_insert_staging
.
(While HDFS tools are expected to treat names beginning either with
underscore and dot as hidden, in practice names beginning with an
underscore are more widely supported.)
我安装了一个单节点的Cloudera来开始学习这项技术。现在,我正在尝试通过 CSV 文件在 HUE 上创建 table。
当我尝试这样做时,正在创建 table 但没有任何数据,只有列结构,我收到以下错误:
Error while compiling statement: FAILED: SemanticException Line 1:17 Invalid path ''/user/josholsan/ic_data/_glucosa.csv'': No files matching path hdfs://server_name:8020/user/josholsan/ic_data/_glucosa.csv
错误说没有匹配此路径的文件,但是当我在终端中尝试以下操作时,文件就在那里:
hadoop fs -ls hdfs//server_name.8020/user/josholsan/ic_data/_glucosa.csv
HUE 正在执行以创建 table 的代码如下:
CREATE TABLE `test`.`cpk`
(
`id` bigint ,
`numsipcod` string ,
`valor` bigint ,
`fecharegistro` string ) ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde'
WITH SERDEPROPERTIES ("separatorChar" = "\t",
"quoteChar" = "\"",
"escapeChar" = "\"
)
STORED AS TextFile TBLPROPERTIES("skip.header.line.count" = "1")
;
LOAD DATA INPATH '/user/josholsan/ic_data/_glucosa.csv' INTO TABLE `test`.`glucosa`;
我还尝试使用 LOAD DATA LOCAL INPATH 从本地加载文件。
我实际上不知道如何进行。我一直在上网查资料,但我发现的内容对我没有帮助。 当我在这行上面写命令时,有一些事情引起了我的注意,就是这个文件的权限,权限是: - rw-r--r--
无论如何,我在 HDFS 设置中禁用了权限检查。
任何有 HDFS/HUE/Cloudera 知识的人都知道这可能是这里的问题所在? 非常感谢你 =)
TL;DR
重命名您的文件 -- 在 Hadoop 生态系统中,名称以点或下划线开头的数据文件通常 会被设计忽略。
来自which files ignored as input by mapper?
(... Hadoop source code excerpt...)
So if you use ...
TextInputFormat
... the hidden files (the file name starts with "_" or ".") will be ignored.
Hive TextFile
格式依赖于 MapReduce TextInputFormat
-- 因此所有带有前导点或前导下划线的文件都将被忽略;它们应该是信号量(例如 Pig 或 Spark 使用的 _SUCCESS
)或临时目录(例如 .impala_insert_staging/
)等。
此外,摘录自the Impala documentation:
The INSERT statement has always left behind a hidden work directory inside the data directory of the table. Formerly, this hidden work directory was named
.impala_insert_staging
. In Impala 2.0.1 and later, this directory name is changed to_impala_insert_staging
.
(While HDFS tools are expected to treat names beginning either with underscore and dot as hidden, in practice names beginning with an underscore are more widely supported.)