Sql 加载到配置单元表仅将整个数据导入第一列
我正在尝试将配置单元数据从一台服务器复制到另一台服务器。通过这种方式,我将从服务器1将配置单元数据导出到CSV中,并尝试将该CSV文件导入到服务器2中的配置单元中 我的表包含以下数据类型: 比基特 串 排列 以下是我的命令: 导出:Sql 加载到配置单元表仅将整个数据导入第一列,sql,database,hadoop,hive,Sql,Database,Hadoop,Hive,我正在尝试将配置单元数据从一台服务器复制到另一台服务器。通过这种方式,我将从服务器1将配置单元数据导出到CSV中,并尝试将该CSV文件导入到服务器2中的配置单元中 我的表包含以下数据类型: 比基特 串 排列 以下是我的命令: 导出: hive -e 'select * from sample' > /home/hadoop/sample.csv load data local inpath '/home/hadoop/sample.csv' into table sample; hiv
hive -e 'select * from sample' > /home/hadoop/sample.csv
load data local inpath '/home/hadoop/sample.csv' into table sample;
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;
导入:
hive -e 'select * from sample' > /home/hadoop/sample.csv
load data local inpath '/home/hadoop/sample.csv' into table sample;
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;
导入到配置单元表中后,整个行数据将仅插入到第一列中
如何克服这一问题,或者有更好的方法将数据从一台服务器复制到另一台服务器吗?在创建表格时,请在“创建状态”末尾的下一行添加数据。
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
如下所示:
hive -e 'select * from sample' > /home/hadoop/sample.csv
load data local inpath '/home/hadoop/sample.csv' into table sample;
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;
然后加载数据:
hive -e 'select * from sample' > /home/hadoop/sample.csv
load data local inpath '/home/hadoop/sample.csv' into table sample;
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;
以您为例
123,Raju,Hello|How Are You
154,Nishant,Hi|How Are You
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;
hive>CREATE TABLE sample(id BIGINT,
名称字符串,
消息(数组)
以“,”结尾的行格式分隔字段
以“|”结尾的收款项目;
配置单元>将数据本地INPATH'/home/hadoop/sample.csv'加载到表sample中;
最重要的一点:
hive -e 'select * from sample' > /home/hadoop/sample.csv
load data local inpath '/home/hadoop/sample.csv' into table sample;
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;
为集合项定义分隔符,不要强制使用数组
您在正常编程中执行的结构。
另外,试着让场地更开阔 不同于集合项的分隔符要避免的分隔符 混乱和意外的结果
创建表格时,在“创建表格”末尾的行下方添加
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
如下所示:
hive -e 'select * from sample' > /home/hadoop/sample.csv
load data local inpath '/home/hadoop/sample.csv' into table sample;
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;
然后加载数据:
hive -e 'select * from sample' > /home/hadoop/sample.csv
load data local inpath '/home/hadoop/sample.csv' into table sample;
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;
以您为例
123,Raju,Hello|How Are You
154,Nishant,Hi|How Are You
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;
hive>CREATE TABLE sample(id BIGINT,
名称字符串,
消息(数组)
以“,”结尾的行格式分隔字段
以“|”结尾的收款项目;
配置单元>将数据本地INPATH'/home/hadoop/sample.csv'加载到表sample中;
最重要的一点:
hive -e 'select * from sample' > /home/hadoop/sample.csv
load data local inpath '/home/hadoop/sample.csv' into table sample;
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作为数据传输格式
- DistCp按原样在Hadoop集群之间复制数据
- DistCp按原样在Hadoop集群之间复制数据
- 为什么不使用hadoop命令将数据从一个集群传输到另一个集群,例如
bash$ hadoop distcp hdfs://nn1:8020/foo/bar \
hdfs://nn2:8020/bar/foo
然后将数据加载到新表中
load data inpath '/bar/foo/*' into table wyp;
您的问题可能是由分隔符引起的
,如果在创建配置单元表时未设置默认分隔符“\001”。。
如果使用
hive-e'select*from sample'>/home/hadoop/sample.csv
将所有cloumn转换为一个cloumn为什么不使用hadoop命令将数据从一个集群传输到另一个集群,例如
bash$ hadoop distcp hdfs://nn1:8020/foo/bar \
hdfs://nn2:8020/bar/foo
然后将数据加载到新表中
load data inpath '/bar/foo/*' into table wyp;
您的问题可能是由分隔符引起的
,如果在创建配置单元表时未设置默认分隔符“\001”。。
如果您使用
hive-e'select*from sample'>/home/hadoop/sample.csv
将所有cloumn设置为一个cloumn您可以在此处添加创建表样本
脚本吗您可以在此处添加创建表样本
脚本吗