如何加载“|”分隔文件到配置单元中,而不使用“行格式分隔符”创建配置单元表

Posted

技术标签:

【中文标题】如何加载“|”分隔文件到配置单元中,而不使用“行格式分隔符”创建配置单元表【英文标题】:How to load a "|" delimited file into hive without creating a hive table with "ROW FORMAT DELIMITER" 【发布时间】:2019-03-28 20:36:45 【问题描述】:

我正在尝试使用“|”加载本地文件分隔值到 hive 表中,我们通常使用选项 "ROW FORMAT DELIMITER "|" 创建一个表。但我想创建一个普通表并加载数据。我需要使用什么正确的语法,请建议。

工作代码

CREATE TABLE IF NOT EXISTS  testdb.TEST_DATA_TABLE
(  column1                string,
column 2        bigint,
)ROW FORMAT DELIMITED FIELDS TERMINATED BY '|';
LOAD DATA LOCAL INPATH 'xxxxx.csv' INTO TABLE testdb.TEST_DATA_TABLE;

但我想做:

CREATE TABLE IF NOT EXISTS  testdb.TEST_DATA_TABLE
(  column1                string,
column 2        bigint,
);
LOAD DATA LOCAL INPATH 'xxxxx.csv' INTO TABLE testdb.TEST_DATA_TABLE FIELDS TERMINATED BY '|';

原因开始:如果我创建一个表,HDFS 将用“|”将数据存储在表中分隔符

【问题讨论】:

` 如果我创建了一个表,HDFS 会用“|”将数据存储在表中delimite`为什么这是一个问题? 【参考方案1】:

使用您提供的第二个 DDL,Hive will create default formatted table like Textformat,orc,parquet..etc(as per your configuration)cntrl+A 分隔文件(配置单元中的默认分隔符)。

如果你想用竖线分隔存储hdfs file,那么我们需要create Hive Table in Text with | delimiter

(或)

您也可以使用管道分隔符将选择查询的结果写入local (or) HDFS路径。

【讨论】:

您好,我了解,但我正在寻找如何将本地管道分隔文件加载到默认配置单元表中?。 来自 hive 文档:cwiki.apache.org/confluence/display/Hive/… Hive doesn't supports specifying Fields 由 while Loading files into tables 终止。我们仍然需要将create hive table with the specific delimiter 与我们正在加载的file delimiter 匹配..!

以上是关于如何加载“|”分隔文件到配置单元中,而不使用“行格式分隔符”创建配置单元表的主要内容,如果未能解决你的问题,请参考以下文章

如何在将 csv 文件加载到配置单元表时跳过页脚/拖车记录

如何在uitableview中加载数据而不每次都重新加载

如何使用 Spark 数据帧将 csv 数据加载到配置单元中?

如何使用分隔符 ^|^ 将数据文件加载到 spark scala 中?

如何在不删除源文件的情况下将数据从 HDFS 加载到配置单元?

从 orc 文件创建配置单元表而不指定架构