我正在尝试将Hive数据从一台服务器复制到另一台服务器。这样,我将从server1导出到hive数据到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;
您的示例
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;
最重要的一点: