gpt4 book ai didi

sql - 加载到 Hive 表中仅将整个数据导入第一列

转载 作者:可可西里 更新时间:2023-11-01 16:28:23 27 4
gpt4 key购买 nike

我正在尝试将 Hive 数据从一台服务器复制到另一台服务器。通过这种方式,我将 hive 数据从 server1 导出到 CSV 中,并尝试将该 CSV 文件导入到 server2 中的 Hive 中。

我的表包含以下数据类型:

双数

字符串

数组

这是我的命令:

导出:

hive -e 'select * from sample' > /home/hadoop/sample.csv

导入:

load data local inpath '/home/hadoop/sample.csv' into table sample;

导入 Hive 表后,整行数据仅插入第一列。

我该如何克服这个问题,或者是否有更好的方法将数据从一台服务器复制到另一台服务器?

最佳答案

创建表时在创建语句末尾添加下行

ROW FORMAT DELIMITED FIELDS TERMINATED BY ','

如下所示:

hive>CREATE TABLE sample(id int,
name String)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ',';

然后加载数据:

hive>load data local inpath '/home/hadoop/sample.csv' into table sample;

以你为例

样本.csv

123,Raju,Hello|How Are You
154,Nishant,Hi|How Are You

所以在上面的示例数据中,第一列是 bigint,第二列是 String,第三列是 Array,由 | 分隔>

hive> CREATE TABLE sample(id BIGINT,
name STRING,
messages ARRAY<String>)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
COLLECTION ITEMS TERMINATED BY '|';
hive> LOAD DATA LOCAL INPATH '/home/hadoop/sample.csv' INTO TABLE sample;

最重要的一点:

Define delimiter for collection items and don't impose the array structure you do in normal programming.
Also, try to make the field delimiters different from collection items delimiters to avoid confusion and unexpected results.

关于sql - 加载到 Hive 表中仅将整个数据导入第一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49994039/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com