我正在尝试将csv文件加载到Hive表中。 我需要通过HDFS来完成它。
我的最终目标是将配置单元表也连接到 Impala 表,然后我可以将其加载到 Power BI 中,但我在填充 Hive 表时遇到问题。
我使用以下代码在 Hive 查询编辑器中创建一个表:
CREATE TABLE IF NOT EXISTS dbname.table_name (
time_stamp TIMESTAMP COMMENT 'time_stamp',
attribute STRING COMMENT 'attribute',
value DOUBLE COMMENT 'value',
vehicle STRING COMMENT 'vehicle',
filename STRING COMMENT 'filename')
然后我使用以下代码检查并查看位置:
SHOW CREATE TABLE dbname.table_name;
并发现它已转到默认位置: hdfs://our_company/user/hive/warehouse/dbname.db/table_name
所以我在 HDFS 中转到上面的位置,我手动上传了一些 csv 文件,这些文件与我创建的表采用相同的五列格式。 以下是我希望将此数据加载到 Hive 表中的位置,但是当我返回到 Hive 中的 dbname 并打开我创建的表时,所有值仍然是 null,当我尝试在浏览器中打开时,我得到:
数据库错误 分析异常: 无法解析路径:"dbname.table_name">
然后我尝试以下代码:
LOAD DATA INPATH 'hdfs://our_company/user/hive/warehouse/dbname.db/table_name' INTO TABLE dbname.table_name;
它运行良好,但 Hive 中的表仍然没有填充。
我还尝试了上述所有方法,改用创建外部表,并在 LOCATION 参数中指定 HDFS。 我还尝试先创建一个HDFS位置,上传csv文件,然后创建外部表,并将LOCATION参数指向预制的HDFS位置。
我已经确保我有授权权限。
无论我尝试哪种方法,我的表都不会填充 csv 文件。
我在这里做错了什么?
我能够使用以下方法解决问题:
CREATE TABLE IF NOT EXISTS dbname.table_name (
time_stamp STRING COMMENT 'time_stamp',
attribute STRING COMMENT 'attribute',
value STRING COMMENT 'value',
vehicle STRING COMMENT 'vehicle',
filename STRING COMMENT 'filename')
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS TEXTFILE
和
LOAD DATA INPATH 'hdfs://our_company/user/hive/warehouse/dbname.db/table_name' OVERWRITE INTO TABLE dbname.table_name;