如何加载“|”分隔文件到配置单元中,而不使用“行格式分隔符”创建配置单元表
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
匹配..!以上是关于如何加载“|”分隔文件到配置单元中,而不使用“行格式分隔符”创建配置单元表的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Spark 数据帧将 csv 数据加载到配置单元中?
如何使用分隔符 ^|^ 将数据文件加载到 spark scala 中?